课程设计吃蛇游戏课件_第1页
课程设计吃蛇游戏课件_第2页
课程设计吃蛇游戏课件_第3页
课程设计吃蛇游戏课件_第4页
课程设计吃蛇游戏课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告 课程名称:面向对象程序设计 C+ 设计题目:用 C+实现贪吃蛇游戏 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹 2015 年 1 月 6 日 1. 系统需求分析 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 系统下编译运行,也可以在 Vista 下运行,界面稍有不同,但不影响运行结果。 2. 总体设计 2.1设计要求 贪吃蛇算法 程序要求:游戏时,一条蛇在密闭的围墙内, 围墙内会随机出现 一个食物通过键盘上的 4 个光标键控制蛇向上下左右 4 个方向移动, 蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时 计 10 分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞 到墙壁或身体交叉(蛇头撞到自己的身体) ,则游戏结束。 2.2软件主要功能设计 2.2.1 程序结构 根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括 游戏方面开始游戏、停止游戏,设置游戏级别(速度) ,设置图片 等。具体的程序结构如下面的图 1-1 所示。 图 2-1 贪吃蛇结构图 2.2.2 程序流程 根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇 的内容主要包括: 游戏开始,随机出现食物。 贪吃蛇 游 戏 开 始 游 戏 设 置 游 戏 结 束 开始初 级 中 级 高 级 结束 载入游戏并初始化 判断是否 开始 蛇开始移动 根据键盘控制蛇移动方向 判断蛇头和食 物的坐标是否 重合 随机生成下一个食物 判断蛇头和 自身及墙、 毒果是否重 合 游戏结束 设置菜单 选择游戏级别 判断选择 级别 初 级 中 级 高 级 退出 否 否 是 是 是 否 图 2-2 贪吃蛇流程图 3. 详细设计 3.1界面设计 这个程序的关键是表示蛇的图形以及蛇的移动。用一个小表示 蛇的一节身体,身体每长一节,增加一个。移动时必须从蛇头开始, 如果不按任何键,蛇自行在当前方向右前移,当游戏者按了有效的方 向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了 有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图 形的实现是从蛇头的新位置开始画出蛇,在界面中央有个静止不动的 食物,用户通过键盘来控制蛇的走向,当蛇吃到食物时,分数增加十 分,界面开始更新,蛇的身体增加一节,食物的位置变化一次,当蛇 碰到界面时,游戏自动结束,显示用户最后的分数。 3.2数据结构设计 snack.h 文件及类的设计如表 3.1 所示。 表 3.1 1 Cmp 类的设计。 classCmp friend class Csnake; intrSign; /横坐标 intlSign; /竖坐标 public: / friend boolisDead(constCmp Cmp(intr,int l)setPoint(r,l); Cmp() voidsetPoint(intr,int l)rSign=r;lSign=l; Cmp operator-(constCmp Cmp operator+(constCmp ; constintmaxSize = 5; /初始蛇身长度 2 Csnake 类的设计。 classCsnake CmpfirstSign; /蛇头坐标 CmpsecondSign;/蛇颈坐标 CmplastSign; /蛇尾坐标 CmpnextSign; /预备蛇头 int row; /列数 int line; /行数 int count; /蛇身长度 vectorsnakeMap;/整个游戏界面 queuesnakeBody; /蛇身 public: intGetDirections()const; chargetSymbol(constCmp Csnake(int n) /初始化游戏界面大小 if(n30)line=30+2; else line=n+2; row=line*3+2; boolisDead(constCmp void InitInstance(); /初始化游戏界面 boolUpdataGame(); /更新游戏界面 void ShowGame(); /显示游戏界面 ; 3.3函数设计 3.3.1 文件及函数组成 文件及函数的组成以及函数的功能如表 3.2 所示。 这些函数是由两个源文件组成,main.cpp,snack.cpp。main.cpp 是总控所有的函数,使得整个函数得以运行,snack.cpp 的内容主要 是 snack.h 的成员函数。 表中的 s 是 Csnack 类的对象。 表 3.2 3.3.2 函数的详细设计 1. InitInstance 函数 函数原型:void Csnake:InitInstance()。 功能:初始化游戏界面,初始化蛇身,将方向上下左右分别用 4 个 键表示。 参数:无。 返回值:无。 工作方式:根据命令,调用相应函数,建立内存链表,将蛇身坐标 压入队列,并将蛇身作为一个数组。 要求:完成初始化,界面中给出蛇的相关信息。 2. UpdataGame 函数 函数原型:boolCsnake:UpdataGame()。 功能:获取用户按键信息,产生食物,并随机产生食物的相关坐标, 判断在蛇没有死亡的状态下是否碰到食物,如果碰到则加 10 分,蛇身增长一节,返回值定为 true,如果蛇在移动过程中, 撞到墙壁或身体交叉(蛇头撞到自己的身体) ,返回值定为 false,并且输出用户之前所得的分数。 参数:蛇的横坐标 r,蛇的列坐标 l,记录用户成绩 score,获取用 户按键信息 chioce。 返回值:true 或者是 false。 工作方式:获取用户输入按键信息,并且根据用户输入按键信息作 为关键字,进行判断。 要求:自动使蛇开始运动,并且及时获取用户的按键信息,随时判 断是否在移动过程中碰到墙壁或者身体交叉,给出结束息。 3.main 函数 函数原型:int main() 功能:程序的入口点,总控函数。 参数:没有死亡的信息 noDead。 返回值:0。 工作要求:依次调用初始化界面的成员函数,更新游戏界面的成员 函数,显示游戏界面的成员函数。 要求:调用程序信息。 4.Csnake 函数 函数原型:Csnake(int n)功能:初始化游戏界面大小。 参数:int n。 返回值:无。 5.getSymbol 函数 函数原型:char getSymbol(constCmpd #include “snake.h“ #include using namespace std; int main() Csnakes(20); s.InitInstance(); /s.ShowGame(); intnoDead; do s.ShowGame(); noDead=s.UpdataGame(); while (noDead); system(“pause“); return 0; snack.cpp #include #include #include #include “snake.h“ using namespace std; /测试成功 voidCsnake:InitInstance() snakeMap.resize(line); / snakeMap竖坐标横坐标 for(inti=0;i #include using namespace std; #ifndef SNAKE_H #define SNAKE_H classCmp friend class Csnake; intrSign; /横坐标 intlSign; /竖坐标 public: / friend boolisDead(constCmp Cmp(intr,int l)setPoint(r,l); Cmp() voidsetPoint(intr,int l)rSign=r;lSign=l; Cmp operator-(constCmp Cmp operator+(constCmp ; constintmaxSize = 5; /初始蛇身长度 classCsnake CmpfirstSign; /蛇头坐标 CmpsecondSign;/蛇颈坐标 CmplastSign; /蛇尾坐标 CmpnextSign; /预备蛇头 int row; /列数 int line; /行数 int count; /蛇身长度 vectorsnakeMap;/整个游戏界面 queuesnakeBody; /蛇身 public: intGetDirections()const; charge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论