- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
冒险屠宰场游戏
冒险屠宰场游戏
冒险屠宰场是一个简单的迷宫式冒险类游戏。如图3.13 所示是冒险屠宰场游戏运行界面图。
图3.13 冒险屠宰场运行界面图
在游戏开始的时候,玩家可以选择羊、猪或者兔作为控制的精灵。在迷宫中,玩家要在避免被屠
夫抓住的同时吃掉屏幕中不断出现的食物——苹果、香蕉等。在吃掉了所有指定的食物后,迷宫中会
出现一把钥匙,玩家需要拿到这把钥匙,因为之后迷宫中还会出现一道门,拿到钥匙才能打开门。进
入门后,玩家就过关了。
要编译这个游戏,需要安装DirectX 8.0 SDK 或以上版本。事实上,8.0 的版本要求并不是绝对的,
因为在这个游戏中并没有使用到特别的8.0 版本中的API。不过要想在低版本上运行这个程序就必须
修改Dinput 代码。这个游戏运行于1024?768 分辨率下。
3.6.1 系统框架设计
在这个游戏中,有11 个核心类和一个核心结构。这些类和结构构成了游戏的框架。
class CDisplay;
class CSurface;
class CSoundManager;
class CSound;
class CStreamingSound;
class CWaveFile;
class cKeyboard;
class cMouse;
class CSprite;
class CSpriteManager;
class CMaze;
struct SHandleInput
其中类CDisplay、CSurface、CSoundManager、CSound、CStreamingSound 和CWaveFile 是DirectX
8.0 SDK 中提供的类。这里直接将这些类抽取出来。
CDisplay 类用来处理所有DDraw 显示方面的内容,包括前台页面和后台页面的创建,离线屏幕和
调色板的创建以及页面绘制和位图显示。
CSurface 类用来处理所有DirectDrawSurface 方面的内容。
CSoundManager 用来管理声音设备。而CSound 类封装了DirectSound 的缓冲功能。CWaveFile 封
装了从波形文件中读取和写入声音数据。CStreamingSound 封装了DirectSound 播放波形文件的功能,
第3 章2D 游戏开发109
它的Create 函数负责载入一块波形文件到缓冲区,声音播放的时间越长,被写入的缓冲区越大。
cKeyboard 类是键盘输入的接口。cMouse 类是鼠标输入的接口。
CSprite 是精灵类,而CSpriteManager 是精灵管理类,CSpriteManager 类是一个可选的类。在这个
游戏中,玩家控制的精灵就是直接通过CSprite 管理的,而没有使用CSpriteManager。但是对于敌人(屠
夫)精灵使用CSpriteManager 进行管理。
CMaze 是关卡类,即地图类,这里是一种迷宫类。
SHandleInput 结构继承自iKeyboardReceiver 类,它负责处理用户的键盘输入。
3.6.2 程序框架设计
WinMain 函数控制了整个程序的运行流程。WinMain 初始化所有的内容,当消息队列为空时,即
CPU 处于Idle 状态时,调用UpdateFrame 函数更新每一帧。
int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int
nCmdShow )
{
MSG msg;
HWND hWnd;
HACCEL hAccel;
//设置当前时间为随机种子
srand( GetTickCount() );
wsprintf((char*)g_szGameStatus, (char*)GAMESTATUS_TEXT,0,0);
wsprintf((char*)g_szLifeLeft, (char*)LIFE_LEFT_TEXT,g_nLivesLeft -1);
wsprintf((char*)g_szScore, (char*)GAMESCORE_TEXT,g_nScore);
g_hInstance = hInst;
char szName[200];
//载入关卡配置信息
std::fstream LevelData(config.txt,std::ios::in );
//略过第一行内容
LevelData.getline(szName,200);
// 读入关卡数
LevelData g_nNoOfLevels; // Number of Horizontal rows
g_pLevel = new SLEVEL[g_n
您可能关注的文档
- 冀教版四年级英语上册Lesson-10--Brush-and-Wash.ppt
- 冀教版六年级英语下册__自制unit_1__第3、4课课件.ppt
- 冀教版六年级英语上册in the living room课件.ppt
- 冀教版六年级英语下册11课.ppt
- 冀教版四年级英语上册lesson12课件.ppt
- 冀教版四年级下册Unit 2 Days and Mothers Lesson 7 关于month的介绍.pptx
- 冀教版四年级下英语_Lesson16_How do you go to school.ppt
- 冀教版四年级英语上册教案第二单元新.doc
- 冀教版四年级下册英语lesson7Months of the year.ppt
- 冀教版四年级英语上册序数词.ppt
文档评论(0)