语言贪吃蛇程序设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪吃蛇游戏程序设计说明书
题目:贪吃蛇游戏
学校:
系别:
专业
班级:
姓名:
学号:
指导老师:
日期:
一、设计题目:
贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。
二、功能设计:
本游戏要求实现以下几个功能:
(1)用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长;
(2)用户可以调节蛇的运行速度来选择不同的难度;
(3)游戏分多个难度级别;
(4)用户可自选颜色;
(5)记录成绩前五名的游戏玩家;
(6)增加背景音乐;
(7)提高障碍物和游戏级别。
三、程序模块图:
贪吃蛇游戏
初始化
画
图
模
块
控
制
模
块
设
置
模
块
帮
助
模
块
墙
体
蛇
身
食
物
移
动
食
物
死
亡
变
长
成
绩
等
级
音
效
四、 算法流程图:
是 否
否
是
否 是
开 始
初始化界面和蛇身
放置食物
获取按键
开始运动
碰到边界
蛇吃到食 蛇长大
蛇死亡
继续
结束
五、函数原型与功能
1.主函数:void main()
启动程序,触动其他函数。
2.初始化:void init ()
设置背景框大小、蛇体初始值,随机产生食物。
3.随机产生食物:void setfoodcrd()
设置食物生成坐标,0表示食物被吃。
4.画食物:void showfood()
用矩形框来画食物
5.画蛇:void showsnake()
根据蛇的坐标和节数,循环用矩形框来画蛇。
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"
#define 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 ismusic=1; /*音乐播放状态*/
char dir; /*记录蛇运动的方向*/
char c='d';
DIR snake[500],food; /*定义蛇节点和食物的类型*/
int speed=SPEED;
void drawmap() /*画地图函数*/ {
IMAGE img;
char str[10];
loadimage(&img,"贪吃蛇.jpg"); /*游戏界面*/ putimage(0,0,&img);
loadimage(&img,"7.jpg"); /*侧栏提示*/
putimage(600,0,&img);
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,"蛇当前长度");
}
void init() /*初始化蛇函数*/ {
int i;
IMAGE img;
snake[0].x=9*len+lm;
snake[0].y=4*len+lm;
loadimage(&img,"1.jpg");
putimage(snake[0].x-lm,snake[0].y-lm,&img);
for(i=1;i { snake[i].x=len*(9-i)+lm; snake[i].y=len*4+lm;