- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c贪吃蛇9
课 程 设 计 报 告
课程名称:面向对象程序设计C++
设计题目:贪吃蛇
专 业:计算机科学与技术
姓 名:
学 号:
指导教师:李 晓 虹
2015 年 1 月 10 日
1 需求分析
1.1系统需求
操作系统:由于贪吃蛇游戏运行在windows操作系统上,所以要求计算机硬件至少能够运行windows XP及以上的版本的windows操作系统。
软件需求:贪吃蛇游戏使用控制台以字符的方式来显示画面,控制已经集成于操作系统中,无需额外的软件支持。
硬件需求:贪吃蛇游戏需要键盘作为控制命令的输入,需要显示器作为结果输出,因此需要计算机至少具备一个包含光标键的键盘,一个显示分辨率在800*600以上的显示器。
1.2功能需求
根据游戏的一般玩法,游戏应该有如图1-1所示的功能:
图 1-1
界面绘制:包括显示游戏初始界面,显示游戏结束画面,显示游戏运行画面三个主要绘制的界面,其中以游戏运行画面显示得最为频繁。
按键响应:应该响应两个部分的按键。一是接受用户的按键操作来控制蛇的运动方向,包括上下左右四个光标键。二是游戏控制按键,包括ESC退出游戏,SPACE开始游戏。
吃食判定:是对随机在游戏区域内产生的食物与蛇头重合否的判断。如果蛇头位置与食物位置重合,则判断蛇吃到食物,其身体增长一格,继而食物消失并产生新的食物,如果没有吃掉当前已经存在的食物将不会有新的食物产生。
死亡判定:即游戏失败判定。按照一般规则,当蛇头碰到游戏区域的边界或是自身身体那么就判定游戏失败,整个游戏将结束。
2 总体设计
2.1逻辑设计
控制台设置:由于客户机在默认情况下的设置是不符合程序的一些假设的,所以需要进行一些必要的设置。为使界面显示正常,应该将控制台的编码页更换为437,这样才能使用ASCII码的扩展字符。同时应该设置显示的字符字号,减小字号有利于显示效果。在屏幕的频繁刷新中控制台显示会出现闪烁的情况,应该使用缓冲,一次性输出以避免闪烁的出现。
游戏界面:由于使用控制台输出界面,则界面必然只能使用字符来模拟位图的显示。游戏的初始界面与结束界面均使用字符拼成,游戏运行时的画面则通过使用扩展ASCII码表中的扩展字符来实现。
蛇体结构:使用一个自定义的结构体,其包含X,Y两个坐标位置,两个这个结构体的指针,分别指向前一节点与后一节点。通过链表来实现蛇体的存储。并在全局变量中存储蛇体的开始与结尾。绘制时依次遍历并按坐标绘制即可。
2.2系统流程
游戏的流程如图2-1所示,有以下几个步骤。
初始化:将全局变量初始化,初始化蛇体链表,初始化控制台。
等待开始:进入循环,等待用户按下开始键,如果用户没有按下开始建,那么就绘制游戏初始界面,提示用户需按下开始键才能游戏。如果用户按下了开始键,就绘制游戏区域边界并跳出当前的循环。
游戏循环:等待用户按下方向控制键,如果用户并没有按下方向控制键,那么当前的蛇体按照预设的方向前进一格。否者就按照用户按下的方向前进,同时将全局变量中的方向指示变量的值由原来的值更改为用户选定的方向的值;接着判断蛇头的坐标是否与边界或者是自己的身体坐标重合,如果重合则说明游戏失败,将跳出当前循环。如果没有重合则接着判断是否与食物坐标重合,如果重合代表吃到食物,计分加一,蛇长加一,否则为没有吃到食物,不进行任何操作。接着就应该将蛇画在界面上,然后进行下一次游戏循环。
游戏结束:如果上面死亡判定通过将会进入这一个步骤,先绘制游戏结束画面,然后显示游戏得分。游戏变结束了。
图 2-1
除了正常的游戏结束外,还能够通过按下ESC键退出游戏,流程如图2-2所示。
游戏退出:在游戏循环中如果用户按下了ESC键,那么游戏将直接从游戏中退出,不会显示游戏结束画面也不会显示得分。
游戏重置:用户以除按ESC退出游戏的方式外的正常结束将经过重置后重新进入等待开始步骤。
图 2-2
3详细设计
3.1类设计
整个游戏有三个主要的类与几个全局变量分别如图3-1,图3-2所示。
Control类:主要实现初始化控制台设置,构建缓冲,按键监听,死亡检测,吃食检测,生成食物,输出缓冲到屏幕,获取控制状态,清空屏幕,重置等等功能。
UI类:主要实现界面的绘制,包括游戏初始界面,游戏结束界面和边界的绘制使用DrawStart()、DrawEnd()、DrawBorder()三个函数实现。这里的绘制并不是直接向屏幕绘制,而是向缓冲绘制。
Snake类:主要实现蛇的运动,自身的初始化,重置的功能。
图 3
文档评论(0)