欢迎来到天天文库
浏览记录
ID:33116885
大小:343.22 KB
页数:21页
时间:2019-02-20
《c++课程设计:吃蛇游戏》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:面向对象程序设计C++设计题目:用C++实现贪吃蛇游戏专业:计算机科学与技术姓名:学号:指导教师:李晓虹2015年1月6日1.系统需求分析1.1选题背景贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自
2、己的编程能力。因此我们选定了这个题目。1.2关于编译软件本程序采用MicrosoftVisualC++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。1.3关于兼容性本程序经过调试,可以在XP系统下编译运行,也可以在Vista下运
3、行,界面稍有不同,但不影响运行结果。1.总体设计1.1设计要求贪吃蛇算法 程序要求:游戏时,一条蛇在密闭的围墙内, 围墙内会随机出现一个食物通过键盘上的4个光标键控制蛇向上下左右4个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计10分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体),则游戏结束。1.2软件主要功能设计1.2.1程序结构根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、停止游戏,设置游戏级别(速
4、度),设置图片等。具体的程序结构如下面的图1-1所示。贪吃蛇游戏开始游戏设置游戏结束开始初级中级高级结束图2-1贪吃蛇结构图1.2.2程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机出现食物。载入游戏并初始化判断是否开始蛇开始移动根据键盘控制蛇移动方向判断蛇头和食物的坐标是否重合随机生成下一个食物判断蛇头和自身及墙、毒果是否重合游戏结束设置菜单选择游戏级别判断选择级别初级中级高级退出否否是是是否图2-2贪吃蛇流程图1.详细设计1.1界面设计这个程序的关键
5、是表示蛇的图形以及蛇的移动。用一个小@表示蛇的一节身体,身体每长一节,增加一个@。移动时必须从蛇头开始,如果不按任何键,蛇自行在当前方向右前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,在界面中央有个静止不动的食物,用户通过键盘来控制蛇的走向,当蛇吃到食物时,分数增加十分,界面开始更新,蛇的身体增加一节,食物的位置变化一次,当蛇碰到界面时,游戏自动结束,显示用户最
6、后的分数。1.2数据结构设计snack.h文件及类的设计如表3.1所示。表3.11Cmp类的设计。classCmp{friendclassCsnake;intrSign;//横坐标intlSign;//竖坐标public://friendboolisDead(constCmp&cmp);Cmp(intr,intl){setPoint(r,l);}Cmp(){}voidsetPoint(intr,intl){rSign=r;lSign=l;}Cmpoperator-(constCmp&m)cons
7、t{returnCmp(rSign-m.rSign,lSign-m.lSign);}Cmpoperator+(constCmp&m)const{returnCmp(rSign+m.rSign,lSign+m.lSign);}};constintmaxSize=5;//初始蛇身长度2Csnake类的设计。classCsnake{CmpfirstSign;//蛇头坐标CmpsecondSign;//蛇颈坐标CmplastSign;//蛇尾坐标CmpnextSign;//预备蛇头introw;//列数
8、intline;//行数intcount;//蛇身长度vector>snakeMap;//整个游戏界面queuesnakeBody;//蛇身public:intGetDirections()const;chargetSymbol(constCmp&c)const//获取指定坐标点上的字符{returnsnakeMap[c.lSign][c.rSign];}Csnake(intn)//初始化游戏界面大小{if(n<20)line=20+2;elseif(n>30
此文档下载收益归作者所有