欢迎来到天天文库
浏览记录
ID:50350255
大小:604.50 KB
页数:171页
时间:2020-03-08
《c++语言简明教程 教学课件 作者 吴延海_第7章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章贪吃蛇游戏设计7.1游戏设计思路7.2控制台屏幕输出控制类模块7.3游戏地图数据封装类模块7.4贪吃蛇类对象模块7.5游戏引擎封装类模块7.6游戏引擎的集成测试本章小结在前几章介绍了C++面向对象编程的基本语法和概念,要进一步加深理解,需要更多的实践训练。本章以一个有趣的贪吃蛇游戏的开发过程为例,介绍面向对象技术在游戏开发中的简单应用。本章尽可能使用前面已经学过的知识来开发游戏,但是对于具有动画特征的游戏,还需要扩充一些WindowsAPI函数的知识,才可以实现。软件开发有相关的设计思想和理论,由于篇幅所限,本章无法具体讲解诸多理论知
2、识,仅在具体实例开发过程中插入一些实用的编程方法,使得读者在面对稍微复杂的软件系统开发时,不至于无从下手。游戏的开发需要逐步实现各功能模块,在设计上尽可能把各个模块的相关性降到最低,这样便于调试和维护。如果把所有的功能代码都编写到一个源文件中,只会把程序变得更复杂,一旦出现问题,调试和查找错误就会异常困难。7.1游戏设计思路图7.1控制台参数本游戏的设计旨在展示模块化设计的方法,以及循序渐进地编码调试各个模块的过程。使读者能够看懂程序架构,体会简单游戏开发的趣味性。本章要开发的贪吃蛇游戏是相对简单的控制台模式。由图7.1可见控制台屏幕的输出
3、为25行(横坐标)、80列(纵坐标)。对于汉字的显示需要占用2列(2个字符),英文(ASCII码)字符需要占用1列。例如字符“A”属于ASCII码,可以在屏幕上占用(x1,y1)坐标;而字符“★”不属于ASCII字符是汉字字符,则占用(x1,y1)和(x2,y1)坐标,在横坐标上会占用两个位置。本游戏的开发采用逐层逐块分析,然后编写代码测试,将功能开发与功能测试同步进行,全部功能开发测试完毕,整个游戏的集成设计也就容易了。该游戏分如下几个功能模块需要逐步开发和测试:控制台屏幕输出控制类模块;游戏地图类模块;贪吃蛇类对象模块;游戏引擎
4、类模块;游戏系统集成与测试。本章开发的游戏运行于Windows操作系统的控制台屏幕显示模式。其主要屏幕输出控制函数(在windows.h头文件中定义)有以下几个:HANDLEWINAPIGetStdHandle(DWORDnStdHandle);//获取屏幕输出句柄WriteConsoleOutputCharacter//向屏幕输出字符WriteConsoleOutputAttribute//设置输出字符属性7.2控制台屏幕输出控制类模块控制台主要用到以下几种基准颜色(以宏定义方式取值):FOREGROUND_BLUE蓝色FOR
5、EGROUND_GREEN绿色FOREGROUND_RED红色FOREGROUND_INTENSITY加强BACKGROUND_BLUE蓝色背景BACKGROUND_GREEN绿色背景BACKGROUND_RED红色背景BACKGROUND_INTENSITY背景色加强在介绍对屏幕输出函数之前,需要讲解Windows下的几个数据类型:BOOL布尔类型,小于等于0为假,大于等于1为真WORD无符号16位整型,相当于unsignedshortHANDLE空指针,一般作为系统资源的返回值类型,相当于void*DWORD无符号3
6、2位整型,相当于unsignedintLPDWORD无符号32位整型的指针,相当于unsignedint*LPCTSTR字符串指针,相当于constchar*COORD屏幕坐标结构体类型,其结构定义如下:typedefstruct_COORD{SHORTX;//横坐标SHORTY;//纵坐标}COORD;7.2.1GetStdHandle接口函数函数原型:HANDLEWINAPIGetStdHandle(DWORDnStdHandle);调用范例:hOutput=GetStdHandle(STD_OUTPUT_HANDLE);其中,S
7、TD_OUTPUT_HANDLE就是控制台标准输出宏定义。如果获取失败,则返回INVALID_HANDLE_VALUE值,否则为正确值。7.2.2WriteConsoleOutputCharacter接口函数函数原型:BOOLWriteConsoleOutputCharacter//在指定位置处写字符(HANDLEhConsoleOutput,//控制台输出资源句柄LPCTSTRlpCharacter,//输出字符指针DWORDnLength,//个数COORDdwWriteCoord,//起始位置LPDWORDlpNumberOfChar
8、sWritten//已写个数);调用范例://调用WindowsAPI函数,把字符串输出到屏幕上fSuccess=WriteConsoleOutputCharacter(m_hO
此文档下载收益归作者所有