收藏 分享(赏)

课程设计吃蛇游戏课件.docx

上传人:微传9988 文档编号:2171552 上传时间:2018-09-03 格式:DOCX 页数:21 大小:343.22KB
下载 相关 举报
课程设计吃蛇游戏课件.docx_第1页
第1页 / 共21页
课程设计吃蛇游戏课件.docx_第2页
第2页 / 共21页
课程设计吃蛇游戏课件.docx_第3页
第3页 / 共21页
课程设计吃蛇游戏课件.docx_第4页
第4页 / 共21页
课程设计吃蛇游戏课件.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、课程设计报告课程名称:面向对象程序设计 C+设计题目:用 C+实现贪吃蛇游戏专 业:计算机科学与技术 姓 名:学 号:指导教师:李 晓 虹2015 年 1 月 6 日1. 系统需求分析1.1 选题背景贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。1.2 关于编译软件本程序采用 Mi

2、crosoft Visual C+6.0 的英文版本进行编译。VisualC+6.0 是 Microsoft 公司推出的基于 Windows 操作系统的可视化 C+编程工具,尽管 Microsoft 公司推出了.NET 平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准 C/C+规范,但仍有相当多的编程人员使用 VisualC+6.0 进行应用系统的开发。1.3 关于兼容性本程序经过调试,可以在 XP 系统下编译运行,也可以在 Vista下运行,界面稍有不同,但不影响运行结果。2. 总体设计2.1 设计要求贪吃蛇算法 程序要求:游戏时,一条蛇在密闭的围墙内, 围墙内会随机出现一个食

3、物通过键盘上的 4 个光标键控制蛇向上下左右 4 个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计 10 分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体) ,则游戏结束。2.2 软件主要功能设计2.2.1 程序结构根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、停止游戏,设置游戏级别(速度) ,设置图片等。具体的程序结构如下面的图 1-1 所示。 图 2-1 贪吃蛇结构图2.2.2 程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏开始,随机出现食物。贪吃蛇游戏开始游戏设

4、置游戏结束开始 初级中级高级结束载入游戏并初始化判断是否开始蛇开始移动根据键盘控制蛇移动方向判断蛇头和食物的坐标是否重合随机生成下一个食物判断蛇头和自身及墙、毒果是否重合游戏结束设置菜单选择游戏级别判断选择级别初级中级高级退出否否是是是否图 2-2 贪吃蛇流程图3. 详细设计3.1 界面设计这个程序的关键是表示蛇的图形以及蛇的移动。用一个小表示蛇的一节身体,身体每长一节,增加一个。移动时必须从蛇头开始,如果不按任何键,蛇自行在当前方向右前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇

5、头的新位置开始画出蛇,在界面中央有个静止不动的食物,用户通过键盘来控制蛇的走向,当蛇吃到食物时,分数增加十分,界面开始更新,蛇的身体增加一节,食物的位置变化一次,当蛇碰到界面时,游戏自动结束,显示用户最后的分数。3.2 数据结构设计snack.h 文件及类的设计如表 3.1 所示。表 3.11 Cmp 类的设计。classCmp friend class Csnake; intrSign; /横坐标 intlSign; /竖坐标 public: / friend boolisDead(constCmp Cmp(intr,int l)setPoint(r,l); Cmp() voidsetPoi

6、nt(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; /蛇身 p

7、ublic: 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,sn

8、ack.cpp。main.cpp是总控所有的函数,使得整个函数得以运行,snack.cpp 的内容主要是 snack.h 的成员函数。表中的 s 是 Csnack 类的对象。表 3.23.3.2 函数的详细设计1. InitInstance 函数函数原型:void Csnake:InitInstance()。功能:初始化游戏界面,初始化蛇身,将方向上下左右分别用 4 个键表示。参数:无。返回值:无。工作方式:根据命令,调用相应函数,建立内存链表,将蛇身坐标压入队列,并将蛇身作为一个数组。要求:完成初始化,界面中给出蛇的相关信息。2. UpdataGame 函数函数原型:boolCsnake:U

9、pdataGame()。功能:获取用户按键信息,产生食物,并随机产生食物的相关坐标,判断在蛇没有死亡的状态下是否碰到食物,如果碰到则加 10分,蛇身增长一节,返回值定为 true,如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体) ,返回值定为false,并且输出用户之前所得的分数。参数:蛇的横坐标 r,蛇的列坐标 l,记录用户成绩 score,获取用户按键信息 chioce。返回值:true 或者是 false。工作方式:获取用户输入按键信息,并且根据用户输入按键信息作为关键字,进行判断。要求:自动使蛇开始运动,并且及时获取用户的按键信息,随时判断是否在移动过程中碰到墙壁或者身体交

10、叉,给出结束息。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.

11、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

12、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; /初始蛇身长度 cl

13、assCsnake 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(); /显示游戏界面 ; #endif / SNAKE_H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报