求一个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;

}