当前位置:首页 > C语言贪吃蛇实验报告
运动速度*/ }
break; case 27: exit(0); default:
switch(key1){ case 72:
while(!kbhit()&&judgeGO(snake)) {
upmove(snake);/*上键函数控制蛇向上运动*/ draw(snake); }
break; case 80:
while(!kbhit()&&judgeGO(snake)) {
downmove(snake);/*下键函数控制蛇向下运动*/ draw(snake); }
break; case 75:
while(!kbhit()&&judgeGO(snake)) {
leftmove(snake);/*左键函数控制蛇向左运动*/ draw(snake); }
break; case 77:
while(!kbhit()&&judgeGO(snake) ) {
rightmove(snake);/*右键函数控制蛇蛇向右运动*/ draw(snake); }
break; } } }
/*---------------------------------------------------*/ /*------------是否继续游戏---------------------------*/ gameover();/*判断游戏是否继续的函数*/ if(getch()==27) exit(0); else {
marksn();
12
getch(); }
/*---------------------------------------------------*/ }
/*-------------------------------------------------*/
/*-----------上下左右移动神马的--------------------*/
void downmove(int (*sna)[17])/*控制蛇向下运动的函数*/ {
int x=0,y=0,mark=0; for(x=0;x<16;x++) {
for(y=0;y<16;y++) {
if(sna[x][y]!=0&&sna[x][y]!=HEAD&&sna[x][y]!=FOOD) {
sna[x][y]=sna[x][y]-1;//前面已经说了,12345....标记法,减去1的话,除了头部以外其他的就移动了。 } } }
for(x=0;x<16;x++) {
for(y=0;y<16;y++) {
if(mark if(sna[x][y]!=HEAD&&sna[x][y]!=FOOD) mark=sna[x][y];//这个是求头部之后的值。 } } for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(sna[x][y]==HEAD) { sna[x+1][y]=HEAD;//头部的移动, sna[x][y]=mark+1;//头部的赋值。 return; } } } } void upmove(int (*sna)[17])/*控制蛇向上运动的函数*/ { int x=0,y=0,mark=0; for(x=0;x<16;x++) 13 { for(y=0;y<16;y++) { if(sna[x][y]!=0&&sna[x][y]!=HEAD&&sna[x][y]!=FOOD) { sna[x][y]=sna[x][y]-1; } } } for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(mark if(sna[x][y]!=HEAD&&sna[x][y]!=FOOD) mark=sna[x][y]; } } for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(sna[x][y]==HEAD) { sna[x-1][y]=HEAD; sna[x][y]=mark+1; return; } } } } void leftmove(int (*sna)[17])/*控制蛇向左运动的函数*/ { int x=0,y=0,mark=0; for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(sna[x][y]!=0&&sna[x][y]!=HEAD&&sna[x][y]!=FOOD) { sna[x][y]=sna[x][y]-1; } } } for(x=0;x<16;x++) { 14 for(y=0;y<16;y++) { if(mark if(sna[x][y]!=HEAD&&sna[x][y]!=FOOD) mark=sna[x][y]; } } for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(sna[x][y]==HEAD) { sna[x][y-1]=HEAD; sna[x][y]=mark+1; return; } } } } void rightmove(int (*sna)[17])/*控制蛇向右运动的函数*/ { int x=0,y=0,mark=0; for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(sna[x][y]!=0&&sna[x][y]!=HEAD&&sna[x][y]!=FOOD) { sna[x][y]=sna[x][y]-1; } } } for(x=0;x<16;x++) { for(y=0;y<16;y++) { if(mark if(sna[x][y]!=HEAD&&sna[x][y]!=FOOD) mark=sna[x][y]; } } for(x=0;x<16;x++) { for(y=0;y<16;y++) 15
共分享92篇相关文档