DOS简易版C语言贪吃蛇
本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下
#include#include #include #include #include #defineWALL_LENGTH22 #defineLEFT0x4b #defineRIGHT0x4d #defineDOWN0x50 #defineUP0x48 structSnakes{ intx; inty; structSnakes*prev; structSnakes*next; }; structFood{ intx; inty; }; structSnakes*header; structSnakes*tailer; structFood*food; intwall[WALL_LENGTH][WALL_LENGTH]; intdirection=RIGHT; /**/ voidinit(); voiddraw(); voidmove(); voiddoMove(intx1,inty1); voideat(); voidkeydown(); voidfoods(); intisOver(); intisDrawSnake(intx,inty); intisDrawFood(intx,inty); intmain(){ init(); while(1){ if(isOver()){ break; } move(); eat(); draw(); _sleep(100); keydown(); } printf("GAMEOVER!"); system("pause"); } voidinit(){ inty,x; for(y=0;y x=10; header->y=10; header->prev=NULL; tailer=(structSnakes*)malloc(sizeof(structSnakes)); tailer->x=9; tailer->y=10; tailer->next=NULL; tailer->prev=header; header->next=tailer; foods(); } voiddraw(){ inty,x; system("cls"); for(y=0;y prev; tailer->x=header->x+x1; tailer->y=header->y+y1; tailer->next=header; tailer->prev->next=NULL; tailer->prev=NULL; header->prev=tailer; header=tailer; tailer=temp_tailer; } voideat(){ if(header->x==food->x&&header->y==food->y){ intx1=0,y1=0; structSnakes*temp_tailer=tailer; tailer=(structSnakes*)malloc(sizeof(structSnakes)); switch(direction){ caseLEFT: x1=-1; y1=0; break; caseRIGHT: x1=1; y1=0; break; caseUP: x1=0; y1=-1; break; caseDOWN: x1=0; y1=1; break; } tailer->x=temp_tailer->x+x1; tailer->y=temp_tailer->y+y1; tailer->next=NULL; tailer->prev=temp_tailer; temp_tailer->next=tailer; foods(); } } voidfoods(){ inty,x; structSnakes*temp=header; _sleep(20); srand((unsigned)time(NULL)); y=rand()%WALL_LENGTH; x=rand()%WALL_LENGTH; if(y==0||y==WALL_LENGTH-1||x==0||x==WALL_LENGTH-1){ returnfoods(); } do{ if(temp->x==x&&temp->y==y){ returnfoods(); } temp=temp->next; }while(temp!=NULL); if(food==NULL){ food=(structFood*)malloc(sizeof(structFood)); } food->x=x; food->y=y; } voidkeydown(){ charkeycode; if(_kbhit()&&(keycode=_getch())){ switch(keycode){ caseLEFT: if(RIGHT!=direction){ direction=LEFT; //move(); //draw(); } break; caseRIGHT: if(LEFT!=direction){ direction=RIGHT; //move(); //draw(); } break; caseUP: if(DOWN!=direction){ direction=UP; //move(); //draw(); } break; caseDOWN: if(UP!=direction){ direction=DOWN; //move(); //draw(); } break; } } } intisDrawSnake(intx,inty){ structSnakes*temp=header; do{ if(temp->x==x&&temp->y==y){ return1; } temp=temp->next; }while(temp!=NULL); return0; } intisDrawFood(intx,inty){ if(food->x==x&&food->y==y){ return1; } return0; } intisOver(){ intx1=0,y1=0; switch(direction){ caseLEFT: x1=-1; y1=0; break; caseRIGHT: x1=1; y1=0; break; caseUP: x1=0; y1=-1; break; caseDOWN: x1=0; y1=1; break; } if(header->x+x1<=0||header->x+x1>=WALL_LENGTH-1 ||header->y+y1<=0||header->y+y1>=WALL_LENGTH-1){ return1; } return0; }
好久没写过C语言了,随便写个贪吃蛇玩一玩,BUG不少,当记录了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。