C语言课程设计一拍飞虫参考
C++语言课程设计一拍飞虫
一、实验内容
玩家通过控制拍子拍打飞虫获取分数。
要求如下:
游戏的初始界面如图一,单击空格键即可进入游戏。进入游戏后的界面如图二。左上角有两个记录游戏数据标示。上面一个是记录游戏剩余时间,下面一个是记录本局的游戏分数。下面也有五个记录游戏数据的标示,从左到右分别是记录各局游戏分数分数最高的前五个。
图 一
图 二
移动鼠标可以控制拍子的移动,单击鼠标左键可以控制拍子拍打动作。
游戏开始的时候,系统随机生成12个虫子,其中大虫子5个,小虫子7个,每打死一个大虫子获得1分,打死一个小虫子获得2分。游戏的分数会实时的显示在左上角。
二、实验指南
实验一 开始实验
【实验任务】
步骤一、打开FunCode,创建一个的C++语言项目;
步骤二、导入KillFeiChong模板。
【实验思路】
按实验指导完成。
打开FunCode,点击“项目”菜单,选择“创建C++工程”
注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。
点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“KillFeiChong”模板,点击“导入到工程”按钮,如图二。
图 一 图 二
导入成功后的,界面如下图所示:
实验二 移动拍子
【实验内容】
步骤一、单击空格键开始游戏
步骤二、初始化游戏数据
步骤三、移动拍子
【实验思路】
获取系统响应键盘按下的消息函数的数据,如果是空格键则进入游戏界面,初始化游戏数据。同时获取鼠标的坐标,设置为拍子精灵的坐标。
【实验指导】
进入LessonX.h中,添加如下的成员变量声明:
CSprite*m_pPaizi;//拍子精灵
CSprite*m_pKaishi;//空格开始精灵
floatm_fGameTime;// 本局游戏剩余时间
CTextSprite*m_pTime; //显示时间文字编辑精灵
CTextSprite*m_pScore;//显示分数文件编辑精灵
floatm_fPosX;//拍子精灵的x坐标
floatm_fPosY;//拍子精灵的y坐标
intm_iGameScore;// 本局游戏当前积分值
进入LessonX.cpp中添加以上变量的初始化代码:
在构造函数中添加如下代码:
m_fGameTime=0.f;
m_iGameScore=0;
m_fPosX=0.f;
m_fPosY=0.f;
m_pKaishi=new CSprite("kaishi");
m_pPaizi=new CSprite("paizi");
m_pTime=new CTextSprite("Time");
m_pScore=new CTextSprite("Score");
在GameInit中获取拍子的初始位置:
m_fPosX=m_pPaizi->GetSpritePositionX();
m_fPosY=m_pPaizi->GetSpritePositionY();
要实现单击空格键进入游戏,就需要添加一个自定义函数处理系统键盘按下事件中得到的数据。
进入LessonX.h中添加自定义函数OnKeyDown的声明:
voidOnKeyDown( const int iKey, const int bAltPress, const int bShiftPress, const int bCtrlPress );
进入LessonX.cpp中添加该函数的定义代码:
void CGameMain::OnKeyDown( const int iKey, const int bAltPress, const int bShiftPress, const int bCtrlPress )
{
}
首先要判断得到的键盘键值是不是空格键,以及游戏的状态是不是等待开始状态,是的话则设置游戏状态为初始化,更新分数显示和游戏剩余时间,隐藏空格开始精灵和鼠标。在上面的函数定义里面添加如下的代码:
if( KEY_SPACE == iKey && 0 == m_iGameState )
{
m_iGameState =1;
m_iGameScore=0;
m_fGameTime=5.f; //游戏总共的时间
// 更新当前游戏积分显示(清零上一局积分显示值)
m_pScore->SetTextValue(m_iGameScore);
// 更新当前游戏剩余时间显示, 由于游戏刚开始,所以直接设置为