基于C语言实现贪吃蛇小游戏

这篇文章主要为大家详细介绍了基于C语言实现贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下

1.目标要求:

1.上下左右控制蛇头转向
2.若蛇头碰到食物,长度加一
3.若蛇头碰到边框、碰到自身或蛇回头,游戏结束

2.C语言代码:

#include #include #include #include #define interface_x 19//画布行数 #define interface_y 60//画布列数  /*          《贪吃蛇》    by:你最珍贵      ---------------------------------------      |控制信号: | 向上 | 向下 | 向左 | 向右 |      ---------------------------------------      |    键盘: |  'i' |  'k' |  'j' |  'l' |       ---------------------------------------             1.上下左右控制蛇头转向        2.若蛇头碰到食物,长度加一       3.若蛇头碰到边框或自身,游戏结束  */ void HideCursor(){    //隐藏光标位置 ,这个函数复制代码就行      CONSOLE_CURSOR_INFO cursor_info={1,0};      SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); } void gotoxy(int x,int y){    //把光标放在(0,0)位置 ,这个函数复制代码就行     HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);     COORD pos;     pos.X = x;     pos.Y = y;     SetConsoleCursorPosition(handle,pos); }  int IsEnd;//是否结束  int canvas[interface_x+1][interface_y+1]={0};//画布行数、列数  int scores;//分数  int slow_v,slow_v_num;//移动变慢的值(越大速度越慢),移动变慢的变量 int food_x,food_y;//实物位置  int snakeH_x,snakeH_y;//蛇头位置  int snake_direction; //蛇的方向  void startup(){    //【数据初始化】      int i,j;      HideCursor();//不显示光标      IsEnd = 0;      scores=0;         slow_v=2;     slow_v_num=1;      for(i=1;i<=interface_x;i++){//设置边框          canvas[i][1]=-1;         canvas[i][interface_y]=-1;     }      for(i=1;i<=interface_y;i++){//设置边框          canvas[1][i]=-1;         canvas[interface_x][i]=-1;     }     food_x=rand()%(interface_x-2)+2;//设置食物位置      food_y=rand()%(interface_y-2)+2;     canvas[food_x][food_y]=-2;//设置食物      snakeH_x=(interface_x/2);//设置蛇头位置      snakeH_y=3;     canvas[snakeH_x][snakeH_y]=1;//设置蛇头      snake_direction=4; } void show_begin(){//【初始页面展示】      int i,j;     int start=0;     char input;      while(!start){          gotoxy(0,0);//每次输出页面把鼠标放回(0,0)           for(i=1;i<=24/2-4;i++) printf("\n");          for(i=1;i<80>1){//值>1输出蛇尾*                  printf("*");             }else printf(" ");//值为0输出空白          }         printf("\n");     }      } void move_snake(){     int i,j;     int max=0;//最大值      int max_x,max_y;//最大值位置     for(i=2;i<=interface_x-1;i++){         for(j=2;j<=interface_y-1;j++){             if(canvas[i][j]>max){//寻找最大值                  max=canvas[i][j];                 max_x=i;max_y=j;             }             if(canvas[i][j]>0){//把蛇头蛇尾每一个值加1                  canvas[i][j]++;             }                      }     }     if(snake_direction==1){//上          snakeH_x--;      }else if(snake_direction==2){//下          snakeH_x++;      }else if(snake_direction==3){//左          snakeH_y--;      }else if(snake_direction==4){//右          snakeH_y++;      }          if(canvas[snakeH_x][snakeH_y]==-1||canvas[snakeH_x][snakeH_y]>1){         exit(1);//碰到边界或自身,游戏结束      }else if(canvas[snakeH_x][snakeH_y]==-2){//吃到食物          canvas[snakeH_x][snakeH_y]=1;//添加新蛇头          food_x=rand()%(interface_x-2)+2;//设置新食物位置          food_y=rand()%(interface_y-2)+2;         canvas[food_x][food_y]=-2;         printf("\a") ;         scores++;     }else{//什么都没有碰到则移动          canvas[snakeH_x][snakeH_y]=1;//添加新蛇头          canvas[max_x][max_y]=0;//去掉蛇尾      }  } void update_outinput(){    //【与输入无关的更新】      int i;     slow_v_num=(slow_v_num==slow_v)? 1:slow_v_num+1;     if(slow_v_num==slow_v){//每隔slow_v次运行一次                 move_snake();      }       } void update_input(){//【与输入有关的更新】      char input;     if(kbhit()){         input = getch();         if(input=='i'){//上              if(snake_direction==1){//如果输入与原来方向一致是加速功能,否则为转向                  move_snake();//加速              }else snake_direction=1;//转向          }else if(input=='k'){//下              if(snake_direction==2){                 move_snake();             }else snake_direction=2;         }else if(input=='j'){//左              if(snake_direction==3){                 move_snake();             }else snake_direction=3;         }else if(input=='l'){//右              if(snake_direction==4){                 move_snake();             }snake_direction=4;         }         } } void show_end(){//【显示失败界面】      system("cls");      int i;     for(i=1;i<24>

3.运行结果:

小游戏玩法:

     《贪吃蛇》by:你最珍贵

 --------------------------------------- 
|控制信号: |  向上 |  向下 |  向左 |  向右 |
 --------------------------------------- 
|   键盘:    |    'i'    |   'k'   |   'j'    |    'l'   | 
 --------------------------------------- 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是基于C语言实现贪吃蛇小游戏的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言