- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计一 坦克大战
一、游戏介绍
相信大部分同学全部玩过或看过“坦克大战”这款经典游戏。现在,就由我们自己动手来开发它。只要大家俱备了C++语言和面向对象基础知识,然后根据试验指南指导一步一步进行下去,相信我们每个同学全部能把这款经典游戏做出来。
二、试验目标
综合利用C++及其面向对象知识开发一款小游戏。
三、试验内容
在一个战场上,玩家控制坦克,消亡敌方坦克,并预防敌方坦克摧毁我方基地。游戏具体要求以下:
游戏有一个初始页面,以下图。屏幕上最内部黑色区域为玩家坦克活动区域,左上角坐标为(-26,-22),右下角坐标为(26,22)。当坦克运动到该区域边界时,坦克不能继续前进。
按下任意键开始游戏,玩家控制坦克在战场上穿梭,碰到墙时,不能经过。
敌方坦克自由移动,每隔2秒改变一个方向,每隔3秒发射一发子弹。
敌方坦克每隔5秒出现一辆,从屏幕上方左、中、右三个位置依次出现。
当玩家被消亡或我方基地被摧毁或游戏时间大于30秒时候,游戏结束。
游戏开始前
进入游戏
四、游戏整体框架
试验指南
试验准备
打开FunCode,创建一个新C++项目。注意:项目名称必需为英文和数字,且不能有空格。
点击“项目”→“导入地图模板”,从对话框中选择名称为TankWar模板导入。导入成功后,界面以下:
试验一 游戏开始
【试验内容】
设置游戏标题
按空格键,提醒图片消失,游戏进入开始状态.
【试验运行结果】
游戏开始前
按下空格键后
【试验思绪】
要处理FunCode中图片,我们需要申明CSprite类型对象来指向对应图片,然后调用精灵类对应函数进行处理。
按下空格键是键盘按下事件,系统调用CSystem::OnKeyDown函数进行响应。该函数中调用CGameMain::OnKeyDown函数。所以我们能够在CGameMain类OnKeyDown函数完成对应代码。
按下键盘后,需要改变游戏状态,游戏从未开始进入开始状态。组员变量m_iGameState用来表示游戏状态。
【试验指导】
C++程序实施入口是主函数。FunCode主函数名称叫WinMain,写在Main.cpp文件中。CSystem::SetWindowTitle是设置程序运行窗口标题函数,修改以下:
CSystem::SetWindowTitle(坦克大战);
FunCode程序运行时,当发生键盘按下事件,程序首先调用并实施CSystem::OnKeyDown函数,然后由CSystem::OnKeyDown函数调用并实施CGameMain::OnKeyDown函数。所以,键盘按下事件响应代码我们在CGameMain::OnKeyDown函数中编写即可。
我们要处理两个精灵以下图,它们名称分别是splash和start。我们需要创建两个CSprite类对象和这两个精灵绑定。
在CGameMain类中申明两个CSprite*类型,依据面向对象封装性原理,组员变量访问权限应该是private。代码应该写LessonX.h文件中。
CSprite* m_pSplash;
CSprite* m_pStart;
在CGameMain类结构函数中,对上面两个指针变量进行初始化。经过调用CSprite结构函数,将精灵和精力对象绑定在一起。
m_pSplash = new CSprite(splash);
m_pStart = new CSprite(start);
最终,我们在CGameMain::OnKeyDown函数中处理空格键按下事件。
if( 0 ==GetGameState() )
{
if(iKey == KEY_SPACE)
{
m_iGameState = 1;
}
}
KEY_SPACE是枚举变量KeyCodes组员,表示空格键。KeyCodes定义在CommonClass.h文件中。该枚举变量定义了全部键盘值。注意:必需将m_iGameState值改为1。当GameMainLoop函数再次实施时,依据m_iGameState值调用并实施GameInit函数,游戏进入开始状态。
进入游戏开始状态时,调用CSprite类SetSpriteVisible函数将精灵图片设置为不可见。
在GameInit函数中添加代码:
m_pSplash-SetSpriteVisible(false);
m_pStart-SetSpriteVisible(false);
程序实施完CGameMain::GameInit函数后,实施CGameMain:: SetGameState(2),将m_iGameState值改为2,游戏进入运行状态。
在CGameMain类析构函数中delete本试验创建指针对象,以释放分配内存。
CGameMain::~CGameMain()
文档评论(0)