C语言快快吃豆游戏Word文档格式.docx
《C语言快快吃豆游戏Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言快快吃豆游戏Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
/*2墙壁,1可以移动地方,3自己,4敌人*/
inta[15][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,2,
2,1,2,2,2,1,1,2,1,1,0,0,0,1,1,4,1,1,0,2,
2,1,1,0,2,1,1,2,0,1,1,2,2,2,2,2,0,0,0,2,
2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,
2,1,2,1,2,1,1,2,1,3,2,2,1,1,1,1,2,2,1,2,
2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,
2,1,2,1,0,1,1,1,1,2,1,0,1,2,2,2,1,1,1,2,
2,1,0,1,0,1,2,1,1,2,1,0,1,2,1,1,4,1,1,2,
2,1,0,2,0,1,2,1,1,2,1,0,1,2,1,1,1,1,1,2,
2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,
2,1,1,2,1,1,2,1,1,2,1,0,2,1,1,2,2,1,1,2,
2,1,2,2,1,2,2,1,1,1,1,0,1,4,1,2,0,0,1,2,
2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
/*数组就是地图*/
structplay/*游戏中人物的结构体*/
{
intx;
inty;
};
structplayyou,them[5];
intsum=0;
/*统计吃的豆子个数,吃满50颗就算胜利*/
intxx[5][2];
/*判定敌人方向用的结构体*/
intfalse=0;
voidinit();
voidbegin();
voidplay();
voidwin();
voidfun(structplay*them);
voidmovethem(structplay*them);
voidloseyes();
voiddrawblackdou(intx,inty);
voidlose();
/*游戏玩法:
当任意按下键时,游戏启动,敌人随机移动,自己开始躲避敌人和墙壁,尽可能多的吃豆豆*/
voidplay()
intkey,i;
while
(1)
{key=bioskey
(2);
while(!
kbhit())/*当无按键时敌人自己移动*/
{
setcolor(GREEN);
/*重画敌人*/
for(i=0;
i<
5;
i++)
circle(them[i].y*20+100,them[i].x*20+100,9);
sleep
(1);
fun(them);
/*处理敌人*/
if(them[i].x==you.x&
&
them[i].y==you.y)
false=1;
/*假如失败的话*/
loseyes();
/*判定是否失败*/
if(false)
break;
}/*跳出while(!
kbhit())*/
if(false)
break;
key=bioskey(0);
setcolor(0);
/*把自己原来位置的人给删除掉*/
circle(100+you.y*20,100+you.x*20,9);
if(key==ESC)
elseif(key==UP)/*这里开始的判定主要是是否吃到豆子和碰到墙壁*/
{
you.x--;
if(a[you.x][you.y]==2)
you.x++;
elseif(a[you.x][you.y]==0)
drawblackdou(you.x,you.y);
}
elseif(key==DOWN)
you.x++;
you.x--;
elseif(key==RIGHT)
you.y++;
if(a[you.x][you.y]==2)
you.y--;
elseif(a[you.x][you.y]==0)
drawblackdou(you.x,you.y);
elseif(key==LEFT)
you.y--;
you.y++;
if(sum==50)
break;
setcolor(RED);
/*执行了一次键盘后再画出自己的位置*/
loseyes();
/*自己走上去碰到敌人的可能*/
}
voidfun(structplay*them)/*移动中的判定*/
inti;
/*把敌人的老位置删除*/
for(i=0;
circle(them[i].y*20+100,them[i].x*20+100,9);
movethem(them);
/*根据控制者的位置来决定敌人的移动方向*/
voidlose()/*输的画面*/
cleardevice();
settextstyle(0,0,4);
while(!
kbhit())
setcolor(rand()%13+1);
outtextxy(180,200,"
GAMEOVER!
"
);
delay(3);
voidwin()/*赢的画面*/
outtextxy(200,200,"
YOUWIN!
voiddrawblackdou(intx,inty)/*吃豆子*/
circle(100+y*20,100+x*20,3);
/*画圆x,y,半径*/
sum++;
/*吃到豆子后就加一*/
a[x][y]=1;
/*吃到后这里就成为普通平地*/
voidloseyes()/*判断是否失败*/
if(them[i].x==you.x&
false=1;
voidmovethem(structplay*them)/*them的移动过程*/
inti,loop;
randomize();
/*随机排列,任意打乱*/
/*只要控制者在身边就立即靠上去*/
if(you.x==them[i].x&
(them[i].y+1)==you.y)
them[i].y++;
elseif(you.x==them[i].x&
(them[i].y-1)==you.y)
them[i].y--;
elseif(you.y==them[i].y&
(them[i].x+1)==you.x)
them[i].x++;
(them[i].x-1)==you.x)
them[i].x--;
else
loop:
xx[i][0]=rand()%4+1;
/*这里的方向采取随机赋值,原则是新的方向不可以和原来的方向相反*/
if(xx[i][0]==1&
xx[i][1]==2||xx[i][0]==2&
xx[i][1]==1)
gotoloop;
if(xx[i][0]==3&
xx[i][1]==4||xx[i][0]==4&
xx[i][1]==3)
xx[i][1]=xx[i][0];
if(xx[i][0]==1)/*四个方向*/
{
them[i].x--;
if(a[them[i].x][them[i].y]==2)/*假如碰墙壁的话就回到原来的地方等待随机的方向*/
{
them[i].x++;
gotoloop;
}
}
elseif(xx[i][0]==2)
them[i].x++;
if(a[them[i].x][them[i].y]==2)
them[i].x--;
elseif(xx[i][0]==3)
them[i].y++;
them[i].y--;
elseif(xx[i][0]==4)
them[i].y--;
them[i].y++;
}
voidbegin()
/*setbkcolor(WHITE);
*/
inti,j;
sleep
(1);
15;
for(j=0;
j<
20;
j++)
if(a[i][j]==2)/*代表墙壁*/
setfillstyle(SOLID_FILL,9);
bar(100+j*20-10,100+i*20+10,100+j*20+10,100+i*20-10);
elseif(a[i][j]==3)/*代表自己*/
setcolor(RED);
circle(100+j*20,100+i*20,9);
elseif(a[i][j]==4)/*代表敌人*/
setcolor(GREEN);
elseif(a[i][j]==0)/*代表豆子*/
setcolor(YELLOW);
setlinestyle(0,0,1);
circle(100+j*20,100+i*20,3);
you.x=5;
you.y=9;
/*自己和敌人的初始坐标*/
them[0].x=2;
them[0].y=15;
them[1].x=4;
them[1].y=1;
them[2].x=8;
them[2].y=16;
them[3].x=12;
them[3].y=13;
them[4].x=13;
them[4].y=7;
voidinit()/*是否开始游戏*/
setcolor(3);
setlinestyle(DASHED_LINE,0,3);
/*设置线的宽度和形式*/
rectangle(100,100,550,350);
/*画矩形*/
settextstyle(3,0,3);
outtextxy(200,200,"
GAMESTART!
outtextxy(110,300,"
ESC-exit/pressanykeytocontinue"
getch();
main()
intgd=DETECT,gm;
intkey;
initgraph(&
gd,&
gm,"
/*图形界面初始化*/
init();
/*调用初始化函数显示进入游戏初始界面*/
/*接收键盘按键*/
exit(0);
else
cleardevice();
begin();
play();
/*编写游戏实现过程*/
if(sum==50)/*吃满豆子了*/
win();
getch();
if(false)
lose();
closegraph();
}_