贪吃蛇程序设计说明书Word格式文档下载.docx

上传人:b****6 文档编号:22434539 上传时间:2023-02-04 格式:DOCX 页数:13 大小:61.09KB
下载 相关 举报
贪吃蛇程序设计说明书Word格式文档下载.docx_第1页
第1页 / 共13页
贪吃蛇程序设计说明书Word格式文档下载.docx_第2页
第2页 / 共13页
贪吃蛇程序设计说明书Word格式文档下载.docx_第3页
第3页 / 共13页
贪吃蛇程序设计说明书Word格式文档下载.docx_第4页
第4页 / 共13页
贪吃蛇程序设计说明书Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

贪吃蛇程序设计说明书Word格式文档下载.docx

《贪吃蛇程序设计说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇程序设计说明书Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

贪吃蛇程序设计说明书Word格式文档下载.docx

4.画食物:

voidshowfood()

用矩形框来画食物

5.画蛇:

voidshowsnake()

根据蛇的坐标和节数,循环用矩形框来画蛇。

6.蛇移动:

voidsnakemove()

根据按键,重设坐标

7.改变蛇的方向:

voidchangeskdir()

响应用户的运动方向

8.判断蛇是否死亡:

voidjudgeslod

判断蛇是否碰到自己或墙。

9.判断蛇是否吃到食物:

voidjudgefood()

判断是否吃到食物,吃食后变0,蛇增长一节。

10.结束游戏:

voidgameover()

结束话语,并执行下一步。

六、基本代码

#include<

graphics.h>

conio.h>

stdio.h>

#pragmacomment(lib,"

Winmm.lib"

#include"

MyTimer.h"

#defineSIZEMAX100/*蛇最大长度*/

#defineSPEED100/*初始速度*/

#definelen20/*蛇宽度*/

#definelm10/*蛇每次移动距离*/

#defineinitlen600/*初始化窗口正方形的长度*/

#defineMin_snakelen2/*蛇的最小长度*/

typedefstruct{

intx,y;

}DIR;

intsnakelen=Min_snakelen;

/*蛇的长度*/

intisfood=1;

/*食物状态*/

intisover=0;

/*游戏状态*/

intispause=1;

/*暂停状态*/

intismusic=1;

/*音乐播放状态*/

chardir;

/*记录蛇运动的方向*/

charc='

d'

;

DIRsnake[500],food;

/*定义蛇节点和食物的类型*/

intspeed=SPEED;

voiddrawmap()/*画地图函数*/

{

IMAGEimg;

charstr[10];

loadimage(&

img,"

贪吃蛇.jpg"

);

/*游戏界面*/

putimage(0,0,&

img);

7.jpg"

/*侧栏提示*/

putimage(600,0,&

sprintf(str,"

%d"

snakelen);

setfont(30,0,"

宋体"

setbkmode(TRANSPARENT);

outtextxy(620,10,"

操作说明:

"

setfont(20,0,"

outtextxy(615,50,"

awsd控制方向键"

outtextxy(615,80,"

p键暂停"

outtextxy(615,110,"

o键继续"

outtextxy(615,200,"

esc键退出"

outtextxy(615,140,"

l键暂停音乐"

outtextxy(615,170,"

k键继续播放"

outtextxy(730,250,str);

outtextxy(620,250,"

蛇当前长度"

}

voidinit()/*初始化蛇函数*/

inti;

snake[0].x=9*len+lm;

snake[0].y=4*len+lm;

1.jpg"

putimage(snake[0].x-lm,snake[0].y-lm,&

for(i=1;

i<

snakelen;

i++)

{

snake[i].x=len*(9-i)+lm;

snake[i].y=len*4+lm;

img,"

2.jpg"

putimage(snake[i].x-lm,snake[i].y-lm,&

}

voidshowsnake()/*画蛇函数*/

putimage(snake[0].x-lm,snake[0].y-lm,&

i++)

voidsnakemove()/*画动蛇函数*/

intmx=snake[0].x;

intmy=snake[0].y;

switch(dir)

case'

a'

:

mx-=len;

break;

case'

mx+=len;

w'

my-=len;

s'

my+=len;

default:

for(i=snakelen-1;

i>

=0;

i--)

snake[i+1].x=snake[i].x;

snake[i+1].y=snake[i].y;

snake[0].x=mx;

snake[0].y=my;

showsnake();

intceshiover()/*检测游戏结束函数*/

if(snake[0].x<

0||snake[0].x>

30*len-lm||snake[0].y<

0||snake[0].y>

30*len-lm)

return1;

if(snake[0].x==snake[i].x&

&

snake[0].y==snake[i].y)

return1;

return0;

intfoodinsnake()/*检测食物是否在蛇上函数*/

for(inti=0;

if(food.x==snake[i].x&

food.y==snake[i].y)

else

return0;

voidshowfood()/*画食物函数*/

do{

food.x=(rand()%30)*len+lm;

food.y=(rand()%30)*len+lm;

while(foodinsnake());

3.jpg"

putimage(food.x-lm,food.y-lm,&

isfood=0;

voidkmusic()

if(ismusic==0)

mciSendString("

pausemymusic"

NULL,0,NULL);

if(ismusic==1)

resumemymusic"

voidplaybkmusic()/*播放背景音乐函数*/

open超级玛丽.mp3aliasmymusic"

NULL,0,NULL);

playmymusicrepeat"

voidplaygame()/*玩游戏函数*/

c='

//蛇开始向右移动

isover=0;

snakelen=Min_snakelen;

dir='

MyTimert;

//定义精确延时对象

intT=200;

//延长时间

drawmap();

//画游戏地图

init();

//画小蛇初始位置

while(!

isover)

{

if(ispause)

{

snakemove();

FlushBatchDraw();

//批量绘图

EndBatchDraw();

//结束批量绘图

if(snake[0].x==food.x&

snake[0].y==food.y){

snakelen++;

isfood=1;

}

if(isfood)

showfood();

if(snakelen<

35)

T=200-3*snakelen;

t.Sleep(T);

BeginBatchDraw();

//开始批量绘图模式,防止闪烁问题

drawmap();

loadimage(&

//加载食物图片

};

//按键控制

if(kbhit())

c=getch();

switch(c){

case'

if(dir!

='

){

dir=c;

}break;

){

case27:

exit(0);

break;

//游戏退出

p'

ispause=0;

//p暂停

o'

ispause=1;

//o继续游戏

l'

ismusic=0;

//l暂停音乐

k'

ismusic=1;

//k继续播放

default:

kmusic();

//音乐控制播放

//判断游戏结束

if(ceshiover())

isover=1;

//判断是否重新再来

HWNDwnd=GetHWnd();

//获取窗口句柄

if(isover)

if(MessageBox(wnd,"

游戏结束。

\n重来一局吗?

"

询问"

MB_YESNO|MB_ICONQUESTION)==IDYES)

playgame();

//递归判断出口

//结束批量绘图模式

voidgameover()//游戏结束函数

{

结束.jpg"

setcolor(BLUE);

settextcolor(YELLOW);

outtextxy(280,100,"

125042120郭栋"

outtextxy(320,150,"

感谢您玩,谢谢"

Sleep(2000);

voidgamebegin()//游戏开始函数

MOUSEMSGm;

IMAGEimg,img2;

openbk.mp3aliasmymusic"

//打开音乐

playmymusic"

//播放音乐

loadimage(NULL,"

开始.jpg"

getimage(&

img2,260,250,211,71);

settextcolor(BLUE);

setfont(70,0,"

//设置字体背景为透明

outtextxy(260,100,"

贪吃蛇"

RECTr={260,250,470,320};

setfont(40,0,"

黑体"

setcolor(YELLOW);

drawtext("

开始游戏"

&

r,DT_CENTER|DT_VCENTER|DT_SINGLELINE);

while

(1)

m=GetMouseMsg();

//获取鼠标消息

switch(m.uMsg)

{

caseWM_MOUSEMOVE:

//鼠标移动

if(m.x>

260&

m.x<

470&

m.y>

250&

m.y<

320){

setfillcolor(RED);

fillrectangle(260,250,470,320);

drawtext("

else{

putimage(260,250,&

img2);

}break;

caseWM_LBUTTONDOWN:

//鼠标左键按下

if(m.x>

closemymusic"

//关闭音乐

playbkmusic();

cleardevice();

}break;

default:

if(isover==1)

}

}

initgraph(initlen+160,initlen);

HWNDhWnd=GetHWnd();

SetWindowText(hWnd,"

贪吃蛇游戏-郭栋"

gamebegin();

gameover();

getch();

closegraph();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1