贪吃蛇C语言源文件.docx
- 文档编号:8480688
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:17.68KB
贪吃蛇C语言源文件.docx
《贪吃蛇C语言源文件.docx》由会员分享,可在线阅读,更多相关《贪吃蛇C语言源文件.docx(12页珍藏版)》请在冰豆网上搜索。
贪吃蛇C语言源文件
/*贪吃蛇*/
#include
#include
#include
#include
#defineHENG80
#defineSHU25//HENG是宽度,SHU是高度
#defineTIME400//初始速度
voidGotoxy(intx,inty);
voidFood(structSHE*head);
intMove(structSHE*head);
intPanduan(structSHE*head,intx,inty);
structSHE*Link(structSHE*head);
voidFreeShe(structSHE*head);
voidGameover(void);
voidHuitu(structSHE*head);
intFx,Fy;//食物的位置
intfen;//得分
intfang;//方向参数
intTx,Ty;
//构造蛇身
structSHE
{
intx;
inty;
structSHE*next;
};
intmain(void)
{
structSHE*head=NULL;
inttemp;
inttimes=TIME;
charm;
do
{
fen=0;
fang=2;
temp=fen;
times=TIME;
head=NULL;
head=(structSHE*)malloc(sizeof(structSHE));
head->x=40;
head->y=13;
head->next=NULL;
Food(head);
while
(1)
{
Huitu(head);
Sleep(times);
if(0==Move(head))
{
FreeShe(head);
Gameover();
break;
}
if(temp { Food(head); temp=fen; if(times>50) { times-=10; } elseif(times>20) { times-=1; } else ; } } do { Gotoxy(19,21); printf("是否继续? Y/N: "); scanf("%c",&m); system("cls"); }while(m! ='Y'&&m! ='y'&&m! ='n'&&m! ='N'); }while(m=='Y'||m=='y'); return0; } //绘图 voidHuitu(structSHE*head) { intflag=1; while(head! =NULL) { Gotoxy(head->x,head->y); if(flag==1) { printf("□"); } elseif(flag==2) { printf("■"); } else ; Gotoxy(Tx,Ty); printf(""); flag++; head=head->next; } } //用于光标的移动 voidGotoxy(intx,inty) { COORDcoord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } //食物位置构造 voidFood(structSHE*head) { intflag=0; structSHE*pr=head; do { srand(GetTickCount());//基于毫秒级的随机数产生办法,需头文件winbase.h,windows中设计程序可以用windows.h Fx=(rand()%40)*2; Fy=(rand()%12)*2; flag=0; pr=head; while(pr! =NULL)//防止食物位置与蛇形重合 { if(pr->x==Fx&&pr->y==Fy) { flag=1; break; } pr=pr->next; } }while(flag==1); Gotoxy(Fx,Fy); printf("■"); } //用于蛇的移动 intMove(structSHE*head) { charop; inttox,toy,flag,temp; if(kbhit())//kbhit函数用于检查当前是否有键盘输入,若有则返回一个非0值,否则返回0,需头文件conio.h { op=getch(); switch(op) { case'w': if(fang! =3) fang=1; break; case'd': if(fang! =4) fang=2; break; case's': if(fang! =1) fang=3; break; case'a': if(fang! =2) fang=4; break; default: break; } } switch(fang) { case1: toy=(head->y)-1; tox=(head->x); break; case2: tox=(head->x)+2; toy=(head->y); break; case3: toy=(head->y)+1; tox=(head->x); break; case4: tox=(head->x)-2; toy=(head->y); break; default: break; } flag=Panduan(head,tox,toy); if(flag==0) { return0;//gameover } elseif(flag==1) { head=Link(head); fen++; } else { ; } while(head! =NULL) { temp=head->x; head->x=tox; tox=temp; temp=head->y; head->y=toy; toy=temp; head=head->next; } return1; } //用于食物与失败条件的判断 intPanduan(structSHE*head,intx,inty) { intflag=1; if(x<0||x>HENG-1||y<0||y>SHU-1) { return0;//撞墙 } while(head! =NULL) { if(head->x==x&&head->y==y&&flag! =1) { return0;//咬到自己 } flag++; if(head->next==NULL) { Tx=head->x; Ty=head->y; } head=head->next; } if(x==Fx&&y==Fy) { return1;//有食物 } return2;//无异常 } //蛇身增长 structSHE*Link(structSHE*head) { structSHE*p,*pr; pr=head; p=(structSHE*)malloc(sizeof(structSHE)); if(p==NULL) { printf("发生错误! ! ! "); exit(0); } if(head==NULL) { head=p; } else { while(pr->next! =NULL) { pr=pr->next; } pr->next=p; } p->x=Tx; p->y=Ty; p->next=NULL; returnhead; } //释放内存 voidFreeShe(structSHE*head) { structSHE*pr=NULL; while(head! =NULL) { pr=head; head=head->next; free(pr); } } //游戏失败画面,如果窗口大小不是80*25导致画面不协调可舍去 voidGameover(void) { inti,j; inta[SHU][HENG]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; Gotoxy(0,0); for(i=0;i { for(j=0;j { if(a[i][j]==0) { printf(""); } else { printf("0"); } } } Gotoxy(19,20); printf("游戏最终得分是%d分! ! ! \n",fen); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 语言 源文件