贪食蛇

上个礼拜写的,闲着无聊,没意思......::>_<::

 

 

 

#include<iostream> #include<conio.h> #include<time.h> #include<windows.h> using namespace std; struct move { int x,y; }move[4]={-1,0,0,1,1,0,0,-1}; /*上右下左*/ char MAP[20][20]; int body[20][2],lenth,dis,x,y,SPEED=80; bool canmove(int x,int y,int dis) { if(x+move[dis].x>-1&&x+move[dis].x<20&&y+move[dis].y>-1&&y+move[dis].y<20&&(MAP[x+move[dis].x][y+move[dis].y]==0||MAP[x+move[dis].x][y+move[dis].y]==2)) return true; return false; } void creatpoint() { int i; s: srand((unsigned)time(NULL)); x=rand()%20; srand((unsigned)time(NULL)+x); y=rand()%20; for(i=0;i<lenth;i++) if(body[i][0]==x&&body[i][1]==y) goto s; MAP[x][y]=2; } void gotoxy(int x,int y) /*移动光标*/ { COORD C; C.X = x; C.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),C); } void show() { gotoxy(0,0); int i,j; for(i=0;i<20;i++,cout<<endl) for(j=0;j<20;j++) if(MAP[i][j]==1) cout<<"◎"; else if(MAP[i][j]==2) cout<<"★"; else cout<<" "; } void first() { int i; memset(MAP,0,sizeof(MAP)); lenth=3; for(i=0;i<lenth;i++) { MAP[0][i]=1; body[lenth-i-1][0]=0; body[lenth-i-1][1]=i; } dis=1; for(i=0;i<20;i++) { gotoxy(20*2,i); cout<<"┃"; } gotoxy(0,20); for(i=0;i<20;i++) { cout<<"━"; } creatpoint(); show(); } void moving(int dis) { int i; for(i=0;i<lenth;i++) MAP[body[i][0]][body[i][1]]=0; for(i=lenth-1;i>0;i--) { body[i][0]=body[i-1][0]; body[i][1]=body[i-1][1]; } body[0][0]+=move[dis].x; body[0][1]+=move[dis].y; for(i=0;i<lenth;i++) MAP[body[i][0]][body[i][1]]=1; } void eat() { int i; if(body[0][0]==x&&body[0][1]==y) { for(i=0;i<4;i++) if(body[lenth-1][0]+move[i].x==body[lenth-2][0]&&body[lenth-1][1]+move[i].x==body[lenth-2][1]) break; body[lenth][0]=body[lenth-1][0]+move[(i+2)%4].x; body[lenth][1]=body[lenth-1][1]+move[(i+2)%4].x; lenth++; creatpoint(); } } void control() { char op,i=0,dd; while(i<SPEED) { if(kbhit()>0) { op=getch(); if(op=='d') dd=1; else if(op=='a') dd=3; else if(op=='s') dd=2; else if(op=='w') dd=0; if(dd!=(dis+2)%4) { if(canmove(body[0][0],body[0][1],dd)==false) goto end; dis=dd; moving(dis); eat(); show(); } } Sleep(3); i++; } if(canmove(body[0][0],body[0][1],dis)==true) { moving(dis); eat(); show(); return ; } end:system("cls"); cout<<"game over"<<endl; exit(0); } int main() { first(); while(1) { control(); if(lenth>=17) { SPEED/=2; main(); return 0; } } }

你可能感兴趣的:(贪食蛇)