




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、贪吃蛇游戏程序设计说明书题 目:贪吃蛇游戏学 校: 系 别: 专 业 班 级:姓 名: 学 号:指导老师: 日 期:一、 设计题目:贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。二、 功能设计:本游戏要求实现以下几个功能:(1) 用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长;(2) 用户可以调节蛇的运行速度来选择不同的难度;(3) 游戏分多个难度级别;(4) 用户可自选颜色;(5) 记录成绩前五名的游戏玩家;(6) 增加
2、背景音乐;(7) 提高障碍物和游戏级别。三、 程序模块图:贪吃蛇游戏初始化画图模块控制模块设置模块帮助模块墙体蛇身食物移动食物死亡变长成绩等级音效四、 算法流程图:是否否是否是开 始初始化界面和蛇身放置食物获取按键开始运动碰到边界蛇吃到食蛇长大蛇死亡继续结束五、 函数原型与功能1.主函数:void main() 启动程序,触动其他函数。2.初始化:void init () 设置背景框大小、蛇体初始值,随机产生食物。3.随机产生食物:void setfoodcrd() 设置食物生成坐标,0表示食物被吃。4.画食物:void showfood() 用矩形框来画食物5.画蛇:void showsna
3、ke() 根据蛇的坐标和节数,循环用矩形框来画蛇。6.蛇移动:void snakemove() 根据按键,重设坐标7.改变蛇的方向:void changeskdir() 响应用户的运动方向8.判断蛇是否死亡:void judgeslod 判断蛇是否碰到自己或墙。9.判断蛇是否吃到食物:void judgefood() 判断是否吃到食物,吃食后变0,蛇增长一节。10.结束游戏:void gameover() 结束话语,并执行下一步。六、 基本代码#include#include#include#pragma comment(lib,winmm.lib) #include mytimer.h#de
4、fine sizemax 100 /*蛇最大长度*/#define speed 100 /*初始速度*/#define len 20 /*蛇宽度*/ #define lm 10 /*蛇每次移动距离*/#define initlen 600 /*初始化窗口正方形的长度*/#define min_snakelen 2 /*蛇的最小长度*/typedef struct int x,y;dir;int snakelen=min_snakelen; /*蛇的长度*/int isfood=1; /*食物状态*/int isover=0; /*游戏状态*/int ispause=1; /*暂停状态*/int
5、 ismusic=1; /*音乐播放状态*/char dir; /*记录蛇运动的方向*/char c=d;dir snake500,food; /*定义蛇节点和食物的类型*/int speed=speed;void drawmap() /*画地图函数*/image img;char str10;loadimage(&img,贪吃蛇.jpg); /*游戏界面*/putimage(0,0,&img);loadimage(&img,7.jpg); /*侧栏提示*/putimage(600,0,&img);sprintf(str,%d,snakelen);setfont(30,0,宋体);setbkm
6、ode(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,蛇当前长度);void init() /*初始化蛇函数*/int i;image img;s
7、nake0.x=9*len+lm;snake0.y=4*len+lm; loadimage(&img,1.jpg); putimage(snake0.x-lm,snake0.y-lm,&img);for(i=1;isnakelen;i+)snakei.x=len*(9-i)+lm; snakei.y=len*4+lm; loadimage(&img, 2.jpg); putimage(snakei.x-lm,snakei.y-lm, &img);void showsnake() /*画蛇函数*/int i;image img; loadimage(&img, 1.jpg); putimage(
8、snake0.x-lm,snake0.y-lm , &img); loadimage(&img, 2.jpg); for(i=1;i=0;i-) snakei+1.x=snakei.x;snakei+1.y=snakei.y; snake0.x=mx;snake0.y=my; showsnake(); int ceshiover() /*检测游戏结束函数*/int i;if(snake0.x30*len-lm|snake0.y30*len-lm)return 1;for(i=1;isnakelen;i+)if(snake0.x=snakei.x&snake0.y=snakei.y)return
9、 1;return 0;int foodinsnake() /*检测食物是否在蛇上函数*/for(int i=0;isnakelen;i+)if(food.x=snakei.x&food.y=snakei.y)return 1;elsereturn 0;void showfood() /*画食物函数*/image img; dofood.x=(rand()%30)*len+lm;food.y=(rand()%30)*len+lm;while(foodinsnake(); loadimage(&img, 3.jpg); putimage(food.x-lm,food.y-lm , &img);i
10、sfood=0; void kmusic() if(ismusic=0) mcisendstring(pause mymusic,null,0,null); if(ismusic=1) mcisendstring(resume mymusic,null,0,null);void playbkmusic() /*播放背景音乐函数*/ mcisendstring(open 超级玛丽.mp3 alias mymusic, null, 0, null); mcisendstring(play mymusic repeat, null, 0, null); void playgame() /*玩游戏函数
11、*/ c=d; /蛇开始向右移动isover=0;snakelen=min_snakelen;dir=d; image img; mytimer t; /定义精确延时对象 int t=200; / 延长时间drawmap(); /画游戏地图 init(); /画小蛇初始位置while(!isover) if(ispause) snakemove(); flushbatchdraw(); /批量绘图 endbatchdraw(); /结束批量绘图 if(snake0.x=food.x&snake0.y=food.y) snakelen+; isfood=1; if(isfood) showfood(); if(snakelen260&m.x250&m.y260&m.x250&m.y320) mcisendstring(close mymusic, null, 0, null); /关闭音乐 playbkmusic(); cleardevice(); playgame(); br
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论