贪吃蛇游戏C++命令行版实例代码
本文实例讲述了贪吃蛇游戏C++命令行版的实现代码,是非常经典的游戏。分享给大家供大家参考。具体实现方法如下:
众所周知,贪吃蛇游戏是经典的计算机游戏。
游戏描述如下:
1.贪吃蛇可以自动直线前进,或者玩家可以通过方向键操纵贪吃蛇上下左右前进,每次前进一格。
2.贪吃蛇在规定的区域内活动,当:
①贪吃蛇触碰到墙壁时;
②贪吃蛇的蛇头触碰到蛇身或者蛇尾时;
③玩家的键盘输入不是方向键时;
命令行显示“GameOver!”并且退出游戏。
3.贪吃蛇活动的区域内每次随机产生一颗“豆豆”,当贪吃蛇吃到“豆豆”后蛇身增长一格,自动前进时间缩短100ms(默认是1000ms,且不能少于100ms)。贪吃蛇长度每为8的倍数ImproveaLevel。
C++代码如下:
#include<bios.h> #include<conio.h> #include<dos.h> #include<graphics.h> #include<stdlib.h> #include<time.h> usingnamespacestd; inlinevoiddisplay(chargsDomain[][22],intlevel,intmoveSpeed) { system("cls");//清屏 cout<<endl<<endl; for(inti=0;i<22;i++) { cout<<"\t"; for(intj=0;j<22;j++) cout<<gsDomain[i][j]<<""; if(i==0) { cout<<"\tLevel:"<<level; } elseif(i==3) { cout<<"\t自动前进时间"; } elseif(i==5) { cout<<"\t间隔:"<<moveSpeed<<"ms"; } cout<<endl; } } intmain() { chargsDomain[22][22];//贪吃蛇活动区域(包括墙壁) //初始化贪吃蛇活动区域(不包括墙壁) for(inti=1;i<=21;i++) { for(intj=1;j<=21;j++) gsDomain[i][j]=''; } //初始化贪吃蛇活动区域的上下墙壁 for(inti=0;i<22;i++) gsDomain[0][i]=gsDomain[21][i]='-'; //初始化贪吃蛇活动区域的左右墙壁 for(inti=1;i<21;i++) gsDomain[i][0]=gsDomain[i][21]='|'; //初始化蛇身 for(inti=1;i<=3;i++) gsDomain[1][i]='*'; //初始化蛇头 gsDomain[1][4]='#'; intsnake[2][100];//记录贪吃蛇每次出现的位置的坐标 for(inti=0;i<4;i++) { snake[0][i]=1;//记录贪吃蛇所在位置的x坐标 snake[1][i]=i+1;//记录贪吃蛇所在位置的y坐标 } inthead=3,tail=0,length=4; intbeanX,beanY;//豆豆出现的位置 srand(time(0)); do { beanX=rand()%20+1; beanY=rand()%20+1; }while(gsDomain[beanX][beanY]!=''); gsDomain[beanX][beanY]='*';//豆豆 cout<<"\n\n\t\t贪吃蛇游戏即将开始!\n"; longstart; intlevel=1,moveSpeed=1000; for(inti=3;i>=0;i--) { start=clock(); while(clock()-start<=1000){} system("cls"); if(i) { cout<<"\n\n\t\t进入游戏倒计时:"<<i<<endl; } else display(gsDomain,level,moveSpeed); } chardirection=77;//贪吃蛇默认自动向右直线前进 while(true) { booltimeFlag=true; intx,y; start=clock(); //若时间超过自动前进时间或者键盘上有键按下则终止循环 while((timeFlag=(clock()-start<=moveSpeed))&&!kbhit()){} if(timeFlag) { //键盘上有键按下时读取键盘输入 getch(); direction=getch(); } switch(direction) { //向上 case72:x=snake[0][head]-1,y=snake[1][head]; break; //向下 case80:x=snake[0][head]+1,y=snake[1][head]; break; //向左 case75:x=snake[0][head],y=snake[1][head]-1; break; //向右 case77:x=snake[0][head],y=snake[1][head]+1; break; default:cout<<"\tGameOver!\n"; return0; } if(x==0||x==21||y==0||y==21) { //贪吃蛇触碰到墙壁 cout<<"\tGameOver!\n"; return0; } if(gsDomain[x][y]!=''&&!(x==beanX&&y==beanY)) { //贪吃蛇的蛇头触碰到蛇身或者蛇尾 cout<<"\tGameOver!\n"; return0; } if(x==beanX&&y==beanY) { //吃豆豆 length++;//长度加1 if(length>=8) { //游戏升级处理 length-=8; level++; if(moveSpeed>100) moveSpeed-=100; } gsDomain[snake[0][head]][snake[1][head]]='*'; gsDomain[x][y]='#'; head=(head+1)%100; snake[0][head]=x; snake[1][head]=y; do { beanX=rand()%20+1; beanY=rand()%20+1; }while(gsDomain[beanX][beanY]!=''); gsDomain[beanX][beanY]='*'; display(gsDomain,level,moveSpeed);//屏幕上显示 } else { //不吃豆豆 gsDomain[snake[0][tail]][snake[1][tail]]='';//蛇尾前移一格 tail=(tail+1)%100; gsDomain[snake[0][head]][snake[1][head]]='*'; head=(head+1)%100; snake[0][head]=x; snake[1][head]=y; gsDomain[x][y]='#';//蛇头前移一格 display(gsDomain,level,moveSpeed);//屏幕上显示 } } return0; }
希望本文所述实例对大家C程序设计的学习有所帮助。