11 C++课程设计 - 太空战机 下载本文

FunCode程序设计实验教材系列

C++面向对象课程设计

实验指南

上海锐格软件有限公司

上海锐格软件有限公司

课程设计三 太空战机

一、游戏介绍

太空战机是玩家用键盘控制战机移动并发射子弹,消灭敌方的战机。敌方战机从右到左移动,同时上下浮动。

二、实验目的

综合应用C++语言和面向对象的知识开发一款小游戏。

三、实验内容

在外星球上,玩家通过键盘WSAD键控制己方战机,消灭外星球的邪恶战机。 要求如下:

1、游戏运行时,初始界面如下图。

2、按下空格键,游戏开始,玩家通过WSAD键控制己方战机移动;己方战机不能超出

世界边界。

3、玩家战机每隔0.3秒发射一发子弹;

4、添加敌方战机,每隔5秒创建一架敌方战机; 5、敌方战机每隔3秒发射一发子弹; 6、记录游戏的最高分。

游戏初始界面

1

四、实验指南

实验一 游戏开始和控制我方战机移动

【实验内容】

1、按空格键,游戏开始,“空格开始”字样消失。

2、创建CMyFighter类,并创建对象实例玩家控制的战机。 3、战机碰到世界边界时,静止。

4、游戏开始后,通过键盘WSAD键控制战机移动。 5、战机左右运动的速度为30。上下运动的速度为15。 6、在游戏中显示游戏的当前积分和最高积分。

【实验思路】

按空格键开始游戏,属于键盘按下事件,我们在dOnKeyDown函数中编写代码。 在游戏中,我们运用面向对象的知识将战机看成一个对象,并为这个对象添加一个类叫CMyFighter。类具有属性和方法,要控制战机能在各个方向上自由的游动,我们为CMyFighter类添加上下左右四个方向的速度,并且我们为战机添加OnMove方法控制战机的游动状态。

【实验指导】

1、在L CGameMain中定义类局部变量:

CSprite *m_pBeginSprite ; //GameBegin就是我们“空格开始”精灵。 CTextSprite * m_pCurScoreText;//显示当前积分 CTextSprite * m_pMaxScoreText;// 显示最高分

2、在CGameMain类的构造函数中添加代码,对变量进行初始化。

m_pBeginSprite= new CSprite(\

m_pCurScoreText= new CTextSprite(\m_pMaxScoreText= new CTextSprite(\3、在OnKeyDown中,当按下的按键为空格键并且此时的游戏状态为0,则设置游戏的状

态为1。0表示此时游戏为等待状态,未开始。1表示游戏进行初始化,2表示初始化后会进入游戏运行状态。

// 按下空格,游戏开始

if( KEY_SPACE == iKey && 0 == GetGameState() ) {

SetGameState( 1 ); }

4、在游戏初始化函数GameInit中隐藏 \按空格开始游戏\这个提示图片。

m_pBeginSprite->SetSpriteVisible( false );

5、通过类向导创建CMyFighter类,其继承于CSprite类。以VC++ 6.0为例:

第一步、点击菜单“插入”-〉“新建类”。

2

上海锐格软件有限公司

第二步、在“New Class”对话框中输入类名和父类名。

第三步、点击“更改”按钮,在新对话框中修改CMyFighter类的头文件和cpp文件

的路径。将头文件保存到项目文件夹的\\SourceCode\\Header文件夹中,将cpp文件保存到项目文件夹下的\\SourceCode\\Src文件夹中。

这里需要特别注意的是创建文件路径的问题,所有的.h头文件应该在项目文件夹

3