用c编写贪吃蛇全过程.docx
- 文档编号:308023
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:15
- 大小:25.16KB
用c编写贪吃蛇全过程.docx
《用c编写贪吃蛇全过程.docx》由会员分享,可在线阅读,更多相关《用c编写贪吃蛇全过程.docx(15页珍藏版)》请在冰豆网上搜索。
用c编写贪吃蛇全过程
C语言编写贪吃蛇
此贪吃蛇是我刚学习c语言的时候做的,很手生,写得也不好,而且bug比较多,但做为一般的毕业设计或者是课堂设计是够用了,而且因为不是很专业,但还是希望各位童鞋不要抄袭,毕竟知识是自己的,在看懂了的前提下,自己可以参考着写一遍,弄懂了才是自己的。
废话不说了,大家都懂,现在进入正题。
在vs2010环境下编绎通过,但不保证在其他平台上能通过。
仅做
具体能实现的功能:
方向控制,吃食物,食物有两种,有毒的,吃了会减少生命值,还有一种是无毒的,吃了会长身体,撞墙死亡,碰身体死亡,死亡重新开始游戏。
首先附上一张游戏截图,仅为初学者参考,高手可以点击右上角,谢谢
全部代码为在三个文件里面,分别为header.h,src.c,main.c,下面分别发出
代码及简单的注解:
header.h,这是存放的头文件以及函数声明,就不解释了,直接放代码;
#include
#includevwindows.h>#include
#include
#include
intfood[2];intpois[2][5];
intwall(void);
intinit(intlen);
//intway(intflag);
intmov(intkey);
intprint(intret);
intrun(intret);
intfoods(void);
intgrow(void);
intdirection(void);
intdie(void);
intor(void);
intpoi(void);
intgotoxy(intx,inty);
二、资源文件src.c,这里存放的是函数的实现方法:
#include"header.h"
intflag=0;
intlen=5;
intkey=0;
charname[]="name";
intcore=0;
intlife=3;
//初始化墙
intwall(void)
{
inti=0;
intj=0;
for(i=0;i<30;i++)
{
for(j=0;j<30;j++)
{
if(i==0)
{
printf("*");
if(j==29)
{
printf("\n");
}
}
if(i>0&&i<29)
{
if(j==0)
{
printf("*");
}
if(j==29)
printf("*\n");if(j>0&&j<29){
printf("");
}
}
if(i==29)
{
printf("*");
}
}//
//初始化蛇属性
intinit(intlen)
{
life=3;
core=0;
flag=0;
len=5;
key=0;
gotoxy(8,15);
printf("请输入你的大名,按Enter键开始游戏:
");
scanf("%s",&name);
gotoxy(62,2);
printf("");
gotoxy(62,4);
printf("name:
%s",name);
gotoxy(8,15);
printf("
");
gotoxy(62,6);
printf("方向控制说明:
");
gotoxy(62,7);
printf("w:
向上s:
向下");
gotoxy(62,8);
printf("a:
向左d:
向右");
gotoxy(62,10);
printf("O表示食物");
gotoxy(62,11);
printf("。
表示有毒");
gotoxy(62,12);
printf("分数:
%d",core);
gotoxy(62,14);
printf("生命值:
");
for(i=0;i<3;i++)
{
printf("★");
}
xy[0][0]=22;
xy[1][0]=22;
for(i=1;i { xy[0][i]=xy[0][i-1]-2;xy[1][i]=xy[1][i-1]; } print(len); for(i=0;i<5;i++) { pois[0][i]=2*(rand()%(28)+1); pois[1][i]=rand()%(28)+1; gotoxy(pois[0][i],pois[1][i]); printf("O"); //蛇移动 intrun(intret) {for(i=ret-1;i>0;i--) { xy[0][i]=xy[0][i-1];xy[1][i]=xy[1][i-1]; } } //打印蛇 intprint(intret) { inti=0; for(i=0;i { if(i==0) { gotoxy(xy[0][0],xy[1][0]); printf("♦"); } else gotoxy(xy[0][i],xy[1][i]); printf("•"); } } //定义窗口属性 intgotoxy(intx,inty) { COORDcoord={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } //蛇移动 intmov(intk) { switch(k) { case1: if(2! =flag) { run(len); xy[0][0]=xy[0][0]-2; case3 case4 case2: if(1! =flag) { run(len); xy[0][0]=xy[0][0]+2; flag=2; } break; if(4! =flag) { run(len); xy[1][0]=xy[1][0]-1; flag=3; } break; if(3! =flag) { run(len); xy[1][0]=xy[1][0]+1; } //生成食物 intfoods(void) { food[0]=2*(rand()%(28)+1); food[1]=rand()%(28)+1; gotoxy(food[0],food[1]); printf("O"); } //蛇吃食物并成长 intgrow(void) { if(xy[0][0]==food[0]&&xy[1][0]==food[1]){ len++; foods(); core=core+100; gotoxy(62,12); printf("分数: %d",core); } returnlen; } //根据键值获取蛇的移动方向 intdirection(void) { if(_kbhit()) { key=_getch(); if('a'==key&&flag! =2)flag=1; elseif('d'==key&&flag! =1)flag=2; elseif('w'==key&&flag! =4)flag=3; elseif('s'==key&&flag! =3)flag=4; } returnflag; } //撞强和碰尾死亡方式 intdie(void) { if(xy[0][0]==0||xy[0][0]==58||xy[1][0]==0||xy[1][0]==29)return-1; for(i=1;i { if(xy[0][0]==xy[0][i]&&xy[1][0]==xy[1][i]) { } } //死亡后由玩家决定是否继续游戏 intor(void) { intkey; while (1) { if(_kbhit()) { key=_getch(); if('y'==key) return1; if('n'==key) return2; } } } //吃有毒的食物,生命减少至0; intpoi(void) { for(i=0;i<5;i++) { if(xy[0][0]==pois[0][i]&&xy[1][0]==pois[1][i]){ life--; if(life==0) {gotoxy(62,14);printf("");gotoxy(62,14);printf("生命值: ");return-3; } gotoxy(62,14);printf("");gotoxy(62,14); printf("生命值: ");for(i=1;i<=life;i++) { printf("★"); }pois[0][i]=2*(rand()%(28)+1);pois[1][i]=rand()%(28)+1;gotoxy(pois[0][i],pois[1][i]); printf("O"); 、主函数main.c文件 #include"header.h" intmain(void) { intlen=5; inti; intflag=2; intkill; intret; intret2; system("COLOR0C");//窗口颜色 system("MODECON: COLS=99LINES=30");//窗口宽度和高度 in: len=5; flag=2;//初始化移动方向 kill=1; ret=0; ret2=0; gotoxy(0,0);//光标移动到坐标(0,0)的位置 wall();//打印围墙 //初始化蛇 init(5);//初始化蛇 //测试语句 //gotoxy(58,29); //printf("这"); foods();//调用生成食物的函数,生成一个食物while (1) {gotoxy(xy[0][len-1],xy[1][len-1]); printf("");//蛇移动时,蛇尾前移时擦去原蛇尾mov(flag);//控制蛇移动方向 len=grow();//蛇生长,并返回蛇的长度 ret2=poi();//蛇吃到有毒的食物,如果生命值为0,刚死亡if(ret2==-3) gotoout3; flag=direction();//根据键值,得到蛇移动方向kill=die();//蛇死亡判断,撞墙和碰尾死亡;print(len);//打印当前长度的蛇 if(-1==kill) gotoout1;//撞墙死亡 if(-2==kill) gotoout2;//碰尾死亡 Sleep(300-5*len);//简单延时 out1: gotoxy(15,15); printf("恭喜你撞墙而死! 按y重新开始,按n结束游戏"); in2: ret=or();//死亡后由玩家决定是否继续游戏,按y继续游戏,按n退出游戏 if(1==ret)//复活后游戏,把蛇身置空 { for(i=0;i<50;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 贪吃 全过程
![提示](https://static.bdocx.com/images/bang_tan.gif)