21xrx.com
2024-09-08 09:59:14 Sunday
登录
文章检索 我的文章 写文章
C语言贪吃蛇代码及解析
2023-06-15 15:25:19 深夜i     --     --
- 贪吃蛇:经典游戏

贪吃蛇是一款经典的游戏,在很多年前就已经开始畅销全球,现在仍然傲视群雄。C语言作为一种最经典的编程语言之一,在贪吃蛇中也有着不可替代的地位。正是由于C语言的简单和实用性,使得许多人都热衷于用C语言来编写贪吃蛇游戏。下面我们来分享一下C语言贪吃蛇的代码及解析。

首先,我们来看看C语言贪吃蛇的核心代码,其中包含了贪吃蛇的移动、吃到食物、撞墙等一系列基本操作的实现。核心代码如下:


#include

#include

#include

#include

#define MAX_X 40

#define MAX_Y 20

#define UP 1

#define DOWN 2

#define LEFT 3

#define RIGHT 4

#define FOOD '$'

int speed=300;

int score=0;

int x=10,y=10;//头部坐标

int x_food,y_food;//食物坐标

int head=RIGHT;//默认向右

int gameover=0;//标识游戏是否结束

char map[MAX_X][MAX_Y];

void map_initial();//地图初始化

void print_score();//输出得分和速度

void create_food();//产生食物

void print_map();//绘制地图

void gameover_fun();//游戏结束处理

void move_head();//蛇头移动

void move_body();//蛇身移动

int main()

{

  map_initial();

  create_food();

  while(1)

  {

    print_map();

    move_head();

    move_body();

    Sleep(speed);//控制蛇的速度

    if(gameover==1)

    {

      gameover_fun();

      break;

    }

  }

  return 0;

}

void map_initial()

{

  int i,j;

  x_food=y_food=-1;

  score=0;

  for(i=0;i

  {

    map[i][0]='#';

    map[i][MAX_Y-1]='#';

  }

  for(i=0;i

  {

    map[0][i]='#';

    map[MAX_X-1][i]='#';

  }

  for(i=1;i

  {

    for(j=1;j

    {

      map[i][j]=' ';

    }

  }

}

void create_food()

{

  srand((unsigned)time(NULL));//随机产生种子

  while(1)

  {

    x_food=rand()%(MAX_X-2)+1;

    y_food=rand()%(MAX_Y-2)+1;

    if(map[x_food][y_food]==' ')//产生的食物不在蛇身上

    {

      map[x_food][y_food]=FOOD;

      break;

    }

  }

}

void print_map()

{

  int i,j;

  system("cls");

  printf("  贪吃蛇\n");

  printf(" 得分:%d   速度:%d\n",score,310-speed);

  for(i=0;i

  {

    for(j=0;j

    {

      printf("%c",map[j][i]);

    }

    printf("\n");

  }

}

void move_head()

{

  if(kbhit())

  {

    char c=getch();

    switch(c)

    {

      case 'w':

      case 'W':if(head!=DOWN) head=UP;//向上

          break;

      case 's':

      case 'S':if(head!=UP) head=DOWN;//向下

          break;

      case 'a':

      case 'A':if(head!=RIGHT) head=LEFT;//向左

          break;

      case 'd':

      case 'D':if(head!=LEFT) head=RIGHT;//向右

          break;

    }

  }

  switch(head)

  {

    case UP: x--;break;

    case DOWN: x++;break;

    case LEFT: y--;break;

    case RIGHT: y++;break;

  }

  if(map[x][y]=='#'||map[x][y]=='*') gameover=1;//游戏结束

  if(map[x][y]==FOOD)//吃到食物

  {

    score++;

    create_food();

    if(speed>50)

    {

      speed-=10;//速度加快

    }

  }

  map[x][y]='*';//标识蛇头

}

void move_body()

{

  int i,j;

  for(i=1;i

  {

    for(j=1;j

    {

      if(map[i][j]=='*')

      {

        map[i][j]=' ';

        if(map[i-1][j]==FOOD||map[i+1][j]==FOOD||map[i][j-1]==FOOD||map[i][j+1]==FOOD)

        {

          map[i][j]='*';

          continue;

        }

        if(map[i-1][j]=='*'||map[i+1][j]=='*')

        {

          map[i][j]='*';

          continue;

        }

        if(map[i][j-1]=='*'||map[i][j+1]=='*')

        {

          map[i][j]='*';

          continue;

        }

      }

    }

  }

}

void gameover_fun()

{

  system("cls");

  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

  printf("       Game Over!\n");

  printf("       得分:%d\n",score);

  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

  printf("按任意键返回主菜单...");

  getch();

  gameover=0;

  x=y=10;

  speed=300;//速度重置

  map_initial();//地图重置

  create_food();//食物重置

}

以上代码就是C语言贪吃蛇的核心代码。下面我们来进行一下代码的解析。

代码一共有两部分,第一部分是全局变量与函数的定义,第二部分是主函数的实现。

全局变量:


int speed=300;

int score=0;

int x=10,y=10;//头部坐标

int x_food,y_food;//食物坐标

int head=RIGHT;//默认向右

int gameover=0;//标识游戏是否结束

char map[MAX_X][MAX_Y];

- speed:蛇的移动速度,默认值为300。

- score:游戏得分,每吃到一个食物加1分。

- x、y:蛇头的坐标,初始值为10。

- x_food、y_food:食物坐标。

- head:蛇头移动的方向,默认向右。

- gameover:标识游戏是否结束,初始值为0。

- map:二维数组,表示游戏地图。

函数定义:


void map_initial();//地图初始化

void print_score();//输出得分和速度

void create_food();//产生食物

void print_map();//绘制地图

void gameover_fun();//游戏结束处理

void move_head();//蛇头移动

void move_body();//蛇身移动

- map_initial():初始化地图。

- print_score():输出得分和速度。

- create_food():产生食物。

- print_map():绘制地图。

- gameover_fun():游戏结束处理。

- move_head():蛇头移动。

- move_body():蛇身移动。

主函数:


int main()

{

  map_initial();//初始化地图

  create_food();//产生食物

  while(1)

  {

    print_map();//绘制地图

    move_head();//蛇头移动

    move_body();//蛇身移动

    Sleep(speed);//控制蛇的速度

    if(gameover==1)

    {

      gameover_fun();//游戏结束处理

      break;

    }

  }

  return 0;

}

- main()函数先调用map_initial()函数,初始化地图。

- 然后调用create_food()函数,产生食物。

- 进入while循环,不断调用print_map()函数,绘制地图。

- 接着调用move_head()函数,蛇头移动。

- 再调用move_body()函数,蛇身移动。

- 用Sleep()函数控制蛇的速度。

- 判断游戏是否结束,若结束则调用gameover_fun()函数,进行游戏结束处理。

- 循环结束后,返回0。

以上就是C语言贪吃蛇代码及解析。下面我们来总结一下这段代码中的三个关键词:

- 贪吃蛇:经典游戏,需要玩家控制蛇来吃食物,随着吃到的食物增多,蛇的身体也会变得越来越长。

- C语言:一种最经典的编程语言之一,被广泛使用于各个领域,包括游戏开发。

- 代码:程序员通过编写代码实现某种功能的一系列指令。编写代码需要熟练掌握编程语言的语法和规则,遵循一定的逻辑思路,才能写出完整、正确、有效的代码。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章