c/c++语言开发共享基于C语言实现贪吃蛇小游戏

本文实例为大家分享了c语言实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下1.目标要求:1.上下左右控制蛇头转向2.若蛇头碰到食物,长度加一3.若蛇头碰到边框、碰到自身或蛇回头,游戏结束2.c语言

c/c++开发分享基于C语言实现贪吃蛇小游戏实例为大家分享了c语言实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下

1.目标要求:

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

2.c语言代码:

#include<stdio.h>  #include<stdlib.h>  #include<windows.h>  #include<conio.h>    #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/2-5;i++) printf(" ");          printf("《贪吃蛇》nn");           for(i=1;i<80/2-9;i++) printf(" ");          printf("请按任意键开始游戏nn");          for(i=1;i<=24/2-6;i++) printf("n");          if(kbhit()){              input = getch();              if(input) start=1;          }      }  }   void show(){    //【显示画面】       gotoxy(0,0);//每次输出页面把鼠标放回(0,0)       int i,j,k;          for(i=1;i<=(80-interface_y)/2+interface_y/2-10;i++) printf(" ");      printf("《贪吃蛇》") ;      for(i=1;i<=interface_y/2-8-8;i++) printf(" ");      printf("分数:%3dn",scores);      for(i=1;i<=interface_x;i++){          for(k=1;k<=(80-interface_y)/2;k++) printf(" ");//使屏幕对称加的空格           for(j=1;j<=interface_y;j++){                          if(canvas[i][j]==-1){//值为-1输出边框#                   printf("#");              }else if(canvas[i][j]==-2){//值为-2输出实物m                   printf("m");              }else if(canvas[i][j]==1){//值为1输出蛇头@                   printf("@");              }else if(canvas[i][j]>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/2-2;i++) putchar('n');      for(i=1;i<80/2-5;i++) putchar(' ');      printf("game over!nn");      for(i=1;i<80/2-7;i++) putchar(' ');      printf("您的分数是:%3d分n",scores);      for(i=1;i<24/2-3;i++) putchar('n');          system("pause");//暂停       system("pause");//暂停  }    int main(){      startup();    //数据初始化      show_begin();//初始页面       while(!isend){    //游戏循环执行           show();    // 显示画面           update_outinput();    //与输入无关的更新           update_input();    //与输入有关的更新       }      show_end(); //显示失败界面       return 0;  }

3.运行结果:

小游戏玩法:

     《贪吃蛇》by:你最珍贵

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

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

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

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

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

以上就是c/c++开发分享基于C语言实现贪吃蛇小游戏的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多c/c++开发分享基于C语言实现贪吃蛇小游戏,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1070857.html

(0)
上一篇 2022年3月31日
下一篇 2022年3月31日

精彩推荐