#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
int main(){
short x,y,xy[35][20],l[455][2],n=1,hx,hy;
char a;
hx=15;
hy=7;
//蛇头初始坐标
memset(xy, 0, sizeof(xy));
srand(time(0));
x=rand()%30+1;
y=rand()%15+1;
while(xy[x][y]!=0){
x=(rand()%30)+1;
y=(rand()%15)+1;
}
xy[x][y]=-1;
//生成豆子
while(1){
l[1][0]=hx;
l[1][1]=hy;
a=_getch();
if(a=='w'){
hy--;
}
if(a=='d'){
hx++;
}
if(a=='s'){
hy++;
}
if(a=='a'){
hx--;
}
//按下了哪个键并移动蛇头
if(hx<0||hx>30||hy<0||hy>15||xy[hx][hy]==1){break;}//碰到边缘或身体死亡
xy[hx][hy]=2;
if(hx==x&&hy==y){
x=rand()%30+1;
y=rand()%15+1;
while(xy[x][y]!=0){
x=(rand()%30)+1;
y=(rand()%15)+1;
}
xy[x][y]=-1;
n++;
}
//吃下豆子后生成新豆子
else{xy[(l[n][0])][(l[n][1])]=0;}//不吃豆子长度不变
for(int i=n;i>1;i--){
l[i][0]=l[i-1][0];
l[i][1]=l[i-1][1];
xy[(l[i][0])][(l[i][1])]=1;
}
//蛇身移动(移动到前一个蛇身的位置)
system("cls");
//清屏
cout<<"--------------------------------";//生成上边界
for(int i=1;i<=15;i++){
cout<<"\n|";
for(int j=1;j<=30;j++){
if(xy[j][i]==0){cout<<' ';}
else if(xy[j][i]==2){cout<<'#';}
else if(xy[j][i]==1){cout<<'*';}
else if(xy[j][i]==-1){cout<<'o';}
}
cout<<"|";
}
//生成左右边界、豆子、蛇身以及蛇头
cout<<"\n--------------------------------";//生成下边界
}
system("cls");//死亡后清屏;
cout<<" * * *** * * ***** ***** *******\n * * * * * * * * * *\n * * * * * * * * * *\n * * * * * * * * * *\n * * * * * * * * *******\n * * * * * * * * *\n * * * * * * * * *\n * * * * * * * * *\n * *** *** ***** ***** *******";
//打印YOU DIE
}
共 3 条回复
E