求一个C++写的可以在VS上运行的贪吃蛇游戏。
# include & ltiostream & gt
# include & ltwindows.h & gt
# include & lttime.h & gt
# include & ltconio.h & gt
使用命名空间std
//刷新当前屏幕
inline void Refresh(char q[][22],int grade,int gamespeed){
系统(“cls”);//清除屏幕
int i,j;
cout & lt& ltendl
for(I = 0;我& lt22;i++){
cout & lt& lt”\ t”;
for(j = 0;j & lt22;j++)
cout & lt& ltq[I][j]& lt;& lt' ';//输出蛇板
if(I = = 0)cout & lt;& lt" \t等级是:"
if(I = = 4)cout & lt;& lt”\t自动提前时间”;
if(I = = 6)cout & lt;& lt" t时间间隔是:"
cout & lt& ltendl
}
}
int main(){
char tcsQipan[22][22];//蛇棋盘是二维数组(比如22*22,包括墙壁)。
int i,j;
for(I = 1;我& lt=20;i++)
for(j = 1;j & lt=20;j++)
tcsQipan[I][j]=“”;//初始化蛇板中间的空白部分。
for(I = 0;我& lt=21;i++)
tcsQipan[0][I]= tcsQipan[21][I]= '-';//初始化蛇板的上下壁。
for(I = 1;我& lt=20;i++)
tcsQipan[I][0]= tcsQipan[I][21]= ' | ';//初始化蛇板的左右壁。
int tcszuobao[2][100];//snake坐标数组
for(I = 0;我& lt4;i++){
tcszuobao[0][I]= 1;
tcszuobao[1][I]= I+1;
}
int head = 3,tail = 0;
for(I = 1;我& lt=3;i++)
tcsQipan[1][I]= ' * ';//蛇身
tcsQipan[1][4]= ' # ';//蛇头
int x1,y 1;//随机大米输出
srand(time(0));
做{
x 1 = rand()% 20+1;
y 1 = rand()% 20+1;
} while(tcsQipan[x 1][y 1]!=' ');
tcsQipan[x 1][y 1]= ' * ';
cout & lt& lt" \ n \ n \ t \贪吃蛇游戏就要开始了!"& lt& ltendl//准备开始;;
漫长的开始;
int grade = 1,长度= 4;
int gamespeed = 500//提前时间间隔
for(I = 3;我& gt=0;我- ){
start =时钟();
while(clock()-start & lt;=1000);
系统(“cls”);
如果(i & gt0)
cout & lt& lt" \ n \ n \ t \输入倒计时:"
其他
刷新(tcsQipan,等级,gamespeed);
}
int timeover
充电方向= 77°;//最初,向右移动。
int x,y;
while(1){
time over = 1;
start =时钟();
while((time over =(clock()-start & lt;= gamespeed))& amp;& amp!kb hit());
//如果按下某个键或时间超过自动前进间隔,则循环终止。
如果(超时){
getch();direction = getch();
}
开关(方向){
案例72:x = tcszuobao[0][head]-1;y = tcszuobao[1][head];打破;//向上
案例80:x = tcszuobao[0][head]+1;y = tcszuobao[1][head];打破;//向下
案例75:x = tcszuobao[0][head];y = tcszuobao[1][head]-1;打破;//向左
案例77:x = tcszuobao[0][head];y = tcszuobao[1][head]+1;//到右边
}
如果(!(direction = = 72 | | direction = = 80 | | direction = = 75 | | direction = = 77)){//键不是方向键。
cout & lt& lt" \ t结束了!"& lt& ltendl系统(“暂停”);返回0;
}
if(x = = 0 | | x = = 21 | | y = = 0 | | y = = 21){//碰壁。
cout & lt& lt" \ t结束了!"& lt& ltendl系统(“暂停”);返回0;
}
if(tcsQipan[x][y]!=“”& amp;& amp!(x = = x 1 & amp;& ampY==y1)){ //蛇头接触蛇身。
cout & lt& lt" \ t结束了!"& lt& ltendl系统(“暂停”);返回0;
}
if(x = = x 1 & amp;& ampY==y1){ //吃米饭,长度加1。
长度++;
if(长度& gt=8){
长度-= 8;
年级++;
if(gamespeed & gt;=200)
gamespeed = 550 -等级* 50;//更改自动推进时间间隔
}
tcsQipan[x][y]= ' # ';
tcsQipan[tcszuobao[0][head]][tcszuobao[1][head]]= ' * ';
head =(head+1)% 100;
tcszuobao[0][head]= x;
tcszuobao[1][head]= y;
做
{
x 1 = rand()% 20+1;
y 1 = rand()% 20+1;
} while(tcsQipan[x 1][y 1]!=' ');
tcsQipan[x 1][y 1]= ' * ';
刷新(tcsQipan,等级,gamespeed);
}
Else{ //不吃米饭。
tcsQipan[tcszuobao[0][tail]][tcszuobao[1][tail]]= ' ';
tail =(tail+1)% 100;
tcsQipan[tcszuobao[0][head]][tcszuobao[1][head]]= ' * ';
head =(head+1)% 100;
tcszuobao[0][head]= x;
tcszuobao[1][head]= y;
tcsQipan[tcszuobao[0][head]][tcszuobao[1][head]]= ' # ';
刷新(tcsQipan,等级,gamespeed);
}
}
系统(“暂停”);
返回0;
}