贪吃蛇程序设计说明书Word格式文档下载.docx
- 文档编号:22434539
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:13
- 大小:61.09KB
贪吃蛇程序设计说明书Word格式文档下载.docx
《贪吃蛇程序设计说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇程序设计说明书Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 程序设计 说明书