贪吃蛇课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成都信息工程学院课程设计报告
贪吃蛇游戏设计
姓名:
学号:
姓名:
学号:
姓名:
学号:
专业:信息安全
班级:
提交日期:
贪吃蛇游戏设计
摘要
本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的免费的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。此外,其功能更多更强,可以选择难度。不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。这些也是贪吃蛇游戏的优点。
因我们水平有限,只能设计简单的贪吃蛇游戏。不过,在功能上,比传统贪吃蛇游戏更丰富。操作起来,显得更为灵活。界面的颜色随机变换,不易使眼睛疲劳。
关键词:贪吃蛇小游戏简单灵活颜色多变
目录
论文总页数:12页第一章课题介绍 (1)
1.1课题背景 (1)
1.2关于编译软件 (1)
1.3关于兼容性 (1)
第二章课题分析 (1)
2.1贪吃蛇游戏功能分析 (1)
2.2游戏界面分析 (2)
2.3游戏思路分析 (2)
第三章设计的具体实现 (2)
3.1系统组成模块结构及功能 (2)
3.1.1 程序结构 (3)
3.1.2 程序流程及效果 (3)
3.2类的定义以及变量、函数的声明 (5)
3.2.1 类的定义、函数的声明 (5)
3.2.2 变量声明 (6)
3.3主要功能实现代码 (7)
3.3.1 初始化食物及随机生成食物 (7)
3.3.2 蛇的移动 (7)
3.3.2 判断是否撞墙或身体 (8)
第四章问题解决及运行截图 (9)
结论 (12)
参考文献 (12)
第一章课题介绍
1.1 课题背景
贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将我们自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。
1.2 关于编译软件
本程序采用Microsoft Visual C++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。
1.3 关于兼容性
本程序经过调试,可以在XP系统下编译运行,也可以在Win7下运行,界面稍有不同,但不影响运行结果。
第二章课题分析
2.1 贪吃蛇游戏功能分析
该游戏和我们小时候玩儿的贪吃蛇大同小异:一条蛇在密闭的围墙内,围墙内会因难度系数不同而增设一些一些障碍物,在围墙内会随机出现一个食物,通过键盘上的四个光标键控制它相上下左右四个方向移动,当蛇头撞到食物时,则表示失误被吃掉,这时蛇身增长一节,同时获得10分,接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁、障碍物或者自己的身体,游戏便结束。
2.2 游戏界面分析
程序运行时,如图所示,边框有菱形的围墙,围墙内有不同等级的障碍物设置,美元符号‘$’代表食物。
2.3游戏思路分析
用"⊙"代表蛇的身体,每吃掉一个事物,就增加一个"⊙","¤"代表头,"∧"代表尾,蛇头和蛇尾不能对换。游戏开始时,初始化为蛇自行向下移动,当玩家按了有效键之后,便向指定方向移动,一步移动一节身体。当蛇头位置碰撞到食物与之重复时,就新添加一个节点作为头。
关于蛇的生存:撞墙或者撞到自己的身体就视为生存期满,游戏结束。
关于判断:先判断蛇头移动方向的下一个节点地图坐标是否为1,若为1则撞上表示游戏结束;如果蛇头与自己身体的任一个节点相撞,则游戏结束。
关于过关:每吃一个食物得10分,每一关是200 * 关数为过关。每关地图不一样,速度也不一样,难度递增。
第三章设计的具体实现
3.1 系统组成模块结构及功能
3.1.1 程序结构
根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、以及停止游戏,音乐音效的添加与控制,游戏帮助提示与英雄榜的显示等等。具体的程序结构如下面的图所示。
3.1.2 程序流程及效果
根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机出现食物;按下Space键可以实现暂停功能;设置游戏等级,关卡数;游戏说明;可播放背景音乐和音效等等。
3.2 类的定义以及变量、函数的声明
根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。
3.2.1 类的定义、函数的声明
1.FOOD类:
class food
{
public:
/* 参数说明:
int *nodes_x:当前蛇结点的所有x坐标
int *nodes_y:当前蛇结点的所有y坐标
int nodecount:当前蛇结点个数
const int map[han][lie]:
*/
void createfood(int *nodes_x, int *nodes_y,const int map[han][lie],int nodecount);//随机生成食物
int get_food_x();
int get_food_y();
void set_food_x(int x);
void set_food_y(int y);
void set_food_life(int life);
private:
static int food_x;
static int food_y;
static int food_life;//food 生命
};
2.MAP类:
class map
{
public:
void get_map( const int in_map[][40],int out_map[][40]);//获取地图数组
void print_map( int key);//打印出地图
void selectmap(int mapkey[han][lie]);
private:
};
3.SNACK类:
class snake
{
public:
/*作用:创建蛇的对象*/
snake(){};
void Initi();//初始化蛇
void snake_run();//蛇开始移动
void inter_snake_life();//判断蛇是不是活着
void inter_eat_food(char der);
void movesnaketowhere(int count,char towhere);//控制蛇的移动方向
void selectsnake_xy();//将蛇结点的横纵坐标取出来放到数组中。