欢迎来到天天文库
浏览记录
ID:33116915
大小:682.00 KB
页数:27页
时间:2019-02-20
《c++课程设计:贪吃蛇1》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:面向对象程序设计C++设计题目:贪吃蛇专业:计算机科学与技术姓名:学号:指导教师:李晓虹2015年1月10日1需求分析1.1系统需求操作系统:由于贪吃蛇游戏运行在windows操作系统上,所以要求计算机硬件至少能够运行windowsXP及以上的版本的windows操作系统。软件需求:贪吃蛇游戏使用控制台以字符的方式来显示画面,控制已经集成于操作系统中,无需额外的软件支持。硬件需求:贪吃蛇游戏需要键盘作为控制命令的输入,需要显示器作为结果输出,因此需要计算机至少具备一个包含光标键的键
2、盘,一个显示分辨率在800*600以上的显示器。1.2功能需求根据游戏的一般玩法,游戏应该有如图1-1所示的功能:图1-1界面绘制:包括显示游戏初始界面,显示游戏结束画面,显示游戏运行画面三个主要绘制的界面,其中以游戏运行画面显示得最为频繁。按键响应:应该响应两个部分的按键。一是接受用户的按键操作来控制蛇的运动方向,包括上下左右四个光标键。二是游戏控制按键,包括ESC退出游戏,SPACE开始游戏。吃食判定:是对随机在游戏区域内产生的食物与蛇头重合否的判断。如果蛇头位置与食物位置重合,则判断蛇吃到食物,其
3、身体增长一格,继而食物消失并产生新的食物,如果没有吃掉当前已经存在的食物将不会有新的食物产生。死亡判定:即游戏失败判定。按照一般规则,当蛇头碰到游戏区域的边界或是自身身体那么就判定游戏失败,整个游戏将结束。2总体设计2.1逻辑设计控制台设置:由于客户机在默认情况下的设置是不符合程序的一些假设的,所以需要进行一些必要的设置。为使界面显示正常,应该将控制台的编码页更换为437,这样才能使用ASCII码的扩展字符。同时应该设置显示的字符字号,减小字号有利于显示效果。在屏幕的频繁刷新中控制台显示会出现闪烁的情况
4、,应该使用缓冲,一次性输出以避免闪烁的出现。游戏界面:由于使用控制台输出界面,则界面必然只能使用字符来模拟位图的显示。游戏的初始界面与结束界面均使用字符拼成,游戏运行时的画面则通过使用扩展ASCII码表中的扩展字符来实现。蛇体结构:使用一个自定义的结构体,其包含X,Y两个坐标位置,两个这个结构体的指针,分别指向前一节点与后一节点。通过链表来实现蛇体的存储。并在全局变量中存储蛇体的开始与结尾。绘制时依次遍历并按坐标绘制即可。2.2系统流程游戏的流程如图2-1所示,有以下几个步骤。初始化:将全局变量初始化,
5、初始化蛇体链表,初始化控制台。等待开始:进入循环,等待用户按下开始键,如果用户没有按下开始建,那么就绘制游戏初始界面,提示用户需按下开始键才能游戏。如果用户按下了开始键,就绘制游戏区域边界并跳出当前的循环。游戏循环:等待用户按下方向控制键,如果用户并没有按下方向控制键,那么当前的蛇体按照预设的方向前进一格。否者就按照用户按下的方向前进,同时将全局变量中的方向指示变量的值由原来的值更改为用户选定的方向的值;接着判断蛇头的坐标是否与边界或者是自己的身体坐标重合,如果重合则说明游戏失败,将跳出当前循环。如果没
6、有重合则接着判断是否与食物坐标重合,如果重合代表吃到食物,计分加一,蛇长加一,否则为没有吃到食物,不进行任何操作。接着就应该将蛇画在界面上,然后进行下一次游戏循环。游戏结束:如果上面死亡判定通过将会进入这一个步骤,先绘制游戏结束画面,然后显示游戏得分。游戏变结束了。图2-1除了正常的游戏结束外,还能够通过按下ESC键退出游戏,流程如图2-2所示。游戏退出:在游戏循环中如果用户按下了ESC键,那么游戏将直接从游戏中退出,不会显示游戏结束画面也不会显示得分。游戏重置:用户以除按ESC退出游戏的方式外的正常结
7、束将经过重置后重新进入等待开始步骤。图2-23详细设计3.1类设计整个游戏有三个主要的类与几个全局变量分别如图3-1,图3-2所示。Control类:主要实现初始化控制台设置,构建缓冲,按键监听,死亡检测,吃食检测,生成食物,输出缓冲到屏幕,获取控制状态,清空屏幕,重置等等功能。UI类:主要实现界面的绘制,包括游戏初始界面,游戏结束界面和边界的绘制使用DrawStart()、DrawEnd()、DrawBorder()三个函数实现。这里的绘制并不是直接向屏幕绘制,而是向缓冲绘制。Snake类:主要实现蛇
8、的运动,自身的初始化,重置的功能。图3-1全局变量文件:如图3-2所示,它有定义的一个文件包含标志_GLO_,因为每个类文件都有一些变量在全局文件中被定义,但是多重引用会导致重定义,使用包含标志符可以确保文件只会被引用一次,从而避免重定义的冲突出现。SetConsolFont是一个未在源文件中公开的WinAPI函数,使用它之前需要提前定义,之后再在使用的时候直接从系统dll中获取入口点。四个方向的定义,分别是上下左右四个键值,用于响应用户按
此文档下载收益归作者所有