07 C++程序设计 - 打飞碟 - 图文 联系客服

发布时间 : 星期五 文章07 C++程序设计 - 打飞碟 - 图文更新完毕开始阅读b880008e18e8b8f67c1cfad6195f312b3169eb3d

C++语言课程设计一打飞碟

一、实验内容

玩家通过鼠标控制大炮发射炮弹,击中飞碟获得相应的分数。 要求如下:

1、 游戏的初始界面如图,单击空格键开始游戏。左上方有两个文字编辑精灵用于记录

游戏的剩余时间和分数。下方有五个文字精灵用于记录分数最高的前五个。

2、 单击空格键之后,通过鼠标控制大炮的炮口朝向和发射,准心精灵随鼠标的移动而

移动。三种不同大小的飞碟从右上角飞下,当把准心移动到飞碟身上,单击鼠标左键,则大炮发射炮弹。

3、 大炮发射炮弹的时候炮口有真实场景中开火的效果,炮弹击中飞碟后有爆炸的效

果。

4、 三种飞碟大小不一样,下落速度不同,同时被击中后所能获取的分数也不同。如果

飞碟没有被击中,则飞碟从右下方飞出,删除该飞碟实体。

二、实验指南

实验一开始实验

【实验任务】

步骤一、打开FunCode,创建一个的C++语言项目; 步骤二、导入UFO模板。

【实验思路】 按实验指导完成。

【实验指导】

1、 打开FunCode,点击“项目”菜单,选择“创建C++工程”

注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。 2、 点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“UFO”

模板,点击“导入到工程”按钮,如图二。

图 一 图 二

3、 导入成功后的,界面如下图所示:

地图不仅包括界面设计,还包括该游戏可能要用到的其他精灵。添加到“场景”中的精灵,都已经取好名称,并根据程序要求设置好中心点、链接点等,学生只需要直接编程就可以。

实验二 改变大炮炮口朝向

【实验内容】

步骤一、准心随鼠标移动 步骤二、剩余时间显示 步骤三、改变大炮炮口朝向

【实验思路】

将鼠标的坐标赋给准心,同时隐藏掉鼠标。同时计算大炮炮口和鼠标之间连续与x方向的夹角,以此来设置炮口朝向,具体可以参加实验指导。

【实验指导】

1、 进入LessonX.h中添加如下的成员变量:

int m_iGameScore ;

float 游戏结束

float

m_fDapaoRotation ;

CSprite* m_pDapao;

// 本局游戏积分

m_fGameTime;// 本局游戏当前已经进行的时间,大于设定的时间之后,

//大炮精灵

//时间文字显示精灵 //分数文字显示精灵 //空格开始精灵 //准心精灵

CTextSprite* m_pTime; CTextSprite* m_pScore; CSprite* m_pKaishi;

CSprite* m_pZhunxing;

2、 在LessonX.h中的头文件声明处添加下面代码,目的是为了下面使用atan2函数,该函数的介绍在文档前面部分:

#include

#define PI 3.141592653589793f

3、 进入LessonX.cpp中的构造函数里面添加以上变量的初始化代码:

m_iGameState m_iGameScore

=0; =0;

m_pDapao m_pTime m_pKaishi

m_pScore

=new CSprite(\=new CTextSprite(\=new CSprite(\

=new CSprite(\

=new CTextSprite(\

m_pZhunxing

4、 在GameInit函数里面将大炮的初始角度保存下来,添加如下一行代码:

m_fDapaoRotation=m_pDapao->GetSpriteRotation();

5、 首先要让游戏启动的时候单击空格键进入游戏,就要响应键盘按下的消息,判断系统获得的键值是否是空格键的键值。这里需要添加一个自定义函数OnKeyDown函数。

1) 进入LessonX.h中添加该函数的声明:

void

OnKeyDown( const int iKey, const int iAltPress, const int iShiftPress,

const int iCtrlPress );

2) 进入LessonX.cpp中添加该函数的定义:

void CGameMain::OnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress ) { }

3) 判断是否按下空格键,如果是的话则设置游戏的剩余时间,同时隐藏掉空格开

始精灵和鼠标。在上面的函数定义里面添加如下代码:

// 游戏还未开始,按下空格键,游戏开始。

if( KEY_SPACE == iKey && 0 == m_iGameState ) { }

m_iGameState = m_iGameScore = m_fGameTime

1; // 游戏开始 0; =

30.f;//游戏剩余时间

// 每局游戏开始,初始得分为0 m_pScore->SetTextValue( m_iGameScore ); // 每局游戏开始,初始时间为30

m_pTime->SetTextValue((int)m_fGameTime); // 隐藏 \空格开始\提示图片 m_pKaishi->SetSpriteVisible( false ); // 隐藏鼠标

CSystem::ShowCursor( false );

4) 在Main.cpp中的OnKeyDown函数里面添加这个自定义函数的调用:

g_GameMain.OnKeyDown(iKey,bAltPress,bShiftPress,bCtrlPress);

6、 进入游戏,使准心随鼠标移动,则需要获取到鼠标的坐标,同时赋给准心精灵,需

要添加一个自定义函数OnMouseMove。 1) 进入LessonX.h中添加该函数的声明:

void OnMouseMove( const float fMouseX, const float fMouseY );

2) 进入LessonX.cpp中添加该函数的定义:

void CGameMain::OnMouseMove( const float fMouseX, const float fMouseY ) {