C语言实现贪吃蛇游戏(单人版)
本文实例为大家分享了C语言实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下
相比于第一个:贪吃蛇游戏,功能更加丰富
#include"snake.h" //蛇的移动 voidmove_snake(); //画出蛇 voiddraw_snake(); //产生食物 voidcreatfood(); //判断蛇是否吃到食物 voideatfood(); //判断蛇是否死掉 voidSnakeState(); intmain() { //设置窗口大小 system("modeconcols=110lines=31"); //设置标题 SetConsoleTitleA("贪吃蛇"); //播放bgm playmusic(); //初始化蛇 begin: snake.CH=VK_RIGHT;//初始化方向 snake.len=5;//初始化长度 snake.SPEED=100;//初始化蛇的移动速度 snake.coord[1].x=SCREEN_WIDETH/2;//初始化蛇头的坐标 snake.coord[1].y=SCREEN_HEIGHT/2; snake.coord[2].x=SCREEN_WIDETH/2-2;//初始化蛇头的坐标 snake.coord[2].y=SCREEN_HEIGHT/2; snake.coord[3].x=SCREEN_WIDETH/2-4;//初始化蛇头的坐标 snake.coord[3].y=SCREEN_HEIGHT/2; //初始化食物状态 food.flag=1;//1表示吃到食物0表示没有吃到食物 //初始化食物状态 snake.flag=1;//1活0死 init_sence();//初始化游戏界面 while(1) { colormap(); gotoxy(0,0); printf("■"); HuiFu(); setcolor(); draw_snake();//画蛇 Sleep(snake.SPEED);//蛇的移动速度 move_snake();//移动蛇 if(food.flag) creatfood();//产生食物 eatfood();//判断是否吃到食物 SnakeState();//判断蛇是否死亡 if(!snake.flag)break; } system("cls"); gotoxy(SCREEN_WIDETH/2,SCREEN_HEIGHT/2-4); printf("GAMEOVER!!!"); gotoxy(SCREEN_WIDETH/2-6,SCREEN_HEIGHT/2+2); printf("你的得分是:\t\t\t%d",snake.len-1); gotoxy(SCREEN_WIDETH/2-6,SCREEN_HEIGHT/2+4); printf("我不服再来:\t\t\tCTRL"); gotoxy(SCREEN_WIDETH/2-6,SCREEN_HEIGHT/2+6); printf("算了垃圾游戏毁我青春:\t\tESC"); while(1) { if(GetAsyncKeyState(VK_CONTROL)) { system("cls"); gotobegin; } elseif(GetAsyncKeyState(VK_ESCAPE)) return0; } } //蛇的移动 voidmove_snake() { //判断是否有按键操作 if(GetAsyncKeyState(up)) { if(snake.CH!=down)snake.CH=up; } elseif(GetAsyncKeyState(down)) { if(snake.CH!=up)snake.CH=down; } elseif(GetAsyncKeyState(right)) { if(snake.CH!=left)snake.CH=right; } elseif(GetAsyncKeyState(left)) { if(snake.CH!=right)snake.CH=left; } elseif(GetAsyncKeyState(VK_F1)) { if(snake.SPEED>=50)snake.SPEED-=10; } elseif(GetAsyncKeyState(VK_F2)) { if(snake.SPEED<=100)snake.SPEED+=10; } //游戏难度设置 if(snake.len>=30&&snake.SPEED>=10)snake.SPEED-=2; //根据检测到的方向改变蛇头的位置 switch(snake.CH) { caseright:snake.coord[1].x+=2;break; caseleft:snake.coord[1].x-=2;break; caseup:snake.coord[1].y-=1;break; casedown:snake.coord[1].y+=1;break; } } //画出蛇 voiddraw_snake() { //画出蛇头 gotoxy(snake.coord[1].x,snake.coord[1].y); printf("□"); //画出蛇身,直接一个for循环实现 for(inti=2;i1;i--) { snake.coord[i].x=snake.coord[i-1].x; snake.coord[i].y=snake.coord[i-1].y; } gotoxy(0,0); printf("■"); gotoxy(85,25); printf("得分:%d",snake.len-1); gotoxy(85,22); printf("速度:%dms/步",snake.SPEED); } //产生食物 voidcreatfood() { //随机种子生成 srand((unsigned)time(NULL)); if(food.flag) while(1) { food.x=rand()%80; food.y=rand()%30; if(food.x%2==0&&food.x>=2&&food.x<=78&&food.y>1&&food.y<30) { intflag=0; //判断产生的食物可不可能在蛇的身体上 for(inti=1;i<=snake.len;i++) { if(snake.coord[i].x==food.x&&snake.coord[i].y==food.y) { flag=1; break; } } if(flag)continue; //绘制食物 else { colorfood(); gotoxy(food.x,food.y); printf("⊙"); HuiFu(); food.flag=0; break; } } } food.flag=0; } //判断蛇是否吃到食物 voideatfood() { //只需要判断蛇头是否与食物重合 if(food.x==snake.coord[1].x&&food.y==snake.coord[1].y) { snake.len+=1; food.flag=1; } } //判断蛇是否死掉 voidSnakeState() { if(snake.coord[1].x<2||snake.coord[1].x>78||snake.coord[1].y<1||snake.coord[1].y>29) snake.flag=0; for(inti=2;i<=snake.len;i++) { if(snake.coord[1].x==snake.coord[i].x&&snake.coord[1].y==snake.coord[i].y) snake.flag=0; } }
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。