用c编写贪吃蛇全过程Word文档格式.docx
《用c编写贪吃蛇全过程Word文档格式.docx》由会员分享,可在线阅读,更多相关《用c编写贪吃蛇全过程Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
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<
j++)
if(i==0)
printf("
*"
);
if(j==29)
\n"
}
if(i>
0&
&
29)
if(j==0)
*\n"
if(j>
29){
"
if(i==29)
}//
//初始化蛇属性
intinit(intlen)
life=3;
core=0;
flag=0;
len=5;
key=0;
gotoxy(8,15);
请输入你的大名,按Enter键开始游戏:
scanf("
%s"
&
name);
gotoxy(62,2);
gotoxy(62,4);
name:
name);
"
gotoxy(62,6);
方向控制说明:
gotoxy(62,7);
w:
向上s:
向下"
gotoxy(62,8);
a:
向左d:
向右"
gotoxy(62,10);
O表示食物"
gotoxy(62,11);
。
表示有毒"
gotoxy(62,12);
分数:
%d"
core);
gotoxy(62,14);
生命值:
3;
★"
xy[0][0]=22;
xy[1][0]=22;
for(i=1;
len;
xy[0][i]=xy[0][i-1]-2;
xy[1][i]=xy[1][i-1];
print(len);
5;
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];
//打印蛇
intprint(intret)
ret;
gotoxy(xy[0][0],xy[1][0]);
♦"
else
gotoxy(xy[0][i],xy[1][i]);
•"
//定义窗口属性
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)
xy[0][0]=xy[0][0]+2;
flag=2;
break;
if(4!
xy[1][0]=xy[1][0]-1;
flag=3;
if(3!
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]);
//蛇吃食物并成长
intgrow(void)
if(xy[0][0]==food[0]&
xy[1][0]==food[1]){
len++;
foods();
core=core+100;
returnlen;
//根据键值获取蛇的移动方向
intdirection(void)
if(_kbhit())
key=_getch();
if('
a'
==key&
flag!
=2)flag=1;
elseif('
d'
=1)flag=2;
w'
=4)flag=3;
s'
=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;
if(xy[0][0]==xy[0][i]&
xy[1][0]==xy[1][i])
//死亡后由玩家决定是否继续游戏
intor(void)
intkey;
while
(1)
y'
==key)
return1;
n'
return2;
//吃有毒的食物,生命减少至0;
intpoi(void)
if(xy[0][0]==pois[0][i]&
xy[1][0]==pois[1][i]){
life--;
if(life==0)
{gotoxy(62,14);
printf("
gotoxy(62,14);
return-3;
for(i=1;
=life;
★"
}pois[0][i]=2*(rand()%(28)+1);
pois[1][i]=rand()%(28)+1;
gotoxy(pois[0][i],pois[1][i]);
、主函数main.c文件
intmain(void)
inti;
intflag=2;
intkill;
intret;
intret2;
system("
COLOR0C"
//窗口颜色
MODECON:
COLS=99LINES=30"
//窗口宽度和高度
in:
//初始化移动方向
kill=1;
ret=0;
ret2=0;
gotoxy(0,0);
//光标移动到坐标(0,0)的位置
wall();
//打印围墙
//初始化蛇
init(5);
//测试语句
//gotoxy(58,29);
//printf("
这"
//调用生成食物的函数,生成一个食物while
(1)
{gotoxy(xy[0][len-1],xy[1][len-1]);
//蛇移动时,蛇尾前移时擦去原蛇尾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);
恭喜你撞墙而死!
按y重新开始,按n结束游戏"
in2:
ret=or();
//死亡后由玩家决定是否继续游戏,按y继续游戏,按n退出游戏
if(1==ret)//复活后游戏,把蛇身置空
50;