C++语言课程设计一拍飞虫

上传人:夏** 文档编号:473453774 上传时间:2023-01-02 格式:DOC 页数:15 大小:1.94MB
返回 下载 相关 举报
C++语言课程设计一拍飞虫_第1页
第1页 / 共15页
C++语言课程设计一拍飞虫_第2页
第2页 / 共15页
C++语言课程设计一拍飞虫_第3页
第3页 / 共15页
C++语言课程设计一拍飞虫_第4页
第4页 / 共15页
C++语言课程设计一拍飞虫_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《C++语言课程设计一拍飞虫》由会员分享,可在线阅读,更多相关《C++语言课程设计一拍飞虫(15页珍藏版)》请在金锄头文库上搜索。

1、C+语言课程设计一拍飞虫一、实验内容玩家通过控制拍子拍打飞虫获取分数。要求如下:1、 游戏的初始界面如图一,单击空格键即可进入游戏。进入游戏后的界面如图二。左上角有两个记录游戏数据标示。上面一个是记录游戏剩余时间,下面一个是记录本局的游戏分数。下面也有五个记录游戏数据的标示,从左到右分别是记录各局游戏分数分数最高的前五个。图 一图 二2、 移动鼠标可以控制拍子的移动,单击鼠标左键可以控制拍子拍打动作。3、 游戏开始的时候,系统随机生成12个虫子,其中大虫子5个,小虫子7个,每打死一个大虫子获得1分,打死一个小虫子获得2分。游戏的分数会实时的显示在左上角。二、实验指南实验一 开始实验【实验任务】

2、步骤一、打开FunCode,创建一个的C+语言项目;步骤二、导入KillFeiChong模板。【实验思路】按实验指导完成。1、 打开FunCode,点击“项目”菜单,选择“创建C+工程”注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。2、 点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“KillFeiChong”模板,点击“导入到工程”按钮,如图二。 图 一 图 二3、 导入成功后的,界面如下图所示:实验二 移动拍子【实验内容】步骤一、单击空格键开始游戏步骤二、初始化游戏数据步骤三、移动拍子【实验思路】获取系统响应键盘按下的消息函数的数据,如果是空格

3、键则进入游戏界面,初始化游戏数据。同时获取鼠标的坐标,设置为拍子精灵的坐标。【实验指导】1、 进入LessonX.h中,添加如下的成员变量声明:CSprite*m_pPaizi;/拍子精灵CSprite*m_pKaishi;/空格开始精灵floatm_fGameTime;/ 本局游戏剩余时间CTextSprite*m_pTime; /显示时间文字编辑精灵CTextSprite*m_pScore;/显示分数文件编辑精灵floatm_fPosX;/拍子精灵的x坐标floatm_fPosY;/拍子精灵的y坐标intm_iGameScore;/ 本局游戏当前积分值2、 进入LessonX.cpp中添加

4、以上变量的初始化代码:1) 在构造函数中添加如下代码: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);2) 在GameInit中获取拍子的初始位置:m_fPosX=m_pPaizi-GetSpritePositionX();m_fPosY=m_pPaizi-GetSpritePositionY()

5、;3、 要实现单击空格键进入游戏,就需要添加一个自定义函数处理系统键盘按下事件中得到的数据。1) 进入LessonX.h中添加自定义函数OnKeyDown的声明:voidOnKeyDown( const int iKey, const int bAltPress, const int bShiftPress, const int bCtrlPress );2) 进入LessonX.cpp中添加该函数的定义代码:void CGameMain:OnKeyDown( const int iKey, const int bAltPress, const int bShiftPress, const i

6、nt bCtrlPress )3) 首先要判断得到的键盘键值是不是空格键,以及游戏的状态是不是等待开始状态,是的话则设置游戏状态为初始化,更新分数显示和游戏剩余时间,隐藏空格开始精灵和鼠标。在上面的函数定义里面添加如下的代码:if( KEY_SPACE = iKey & 0 = m_iGameState )m_iGameState =1;m_iGameScore=0;m_fGameTime=5.f; /游戏总共的时间/ 更新当前游戏积分显示(清零上一局积分显示值)m_pScore-SetTextValue(m_iGameScore);/ 更新当前游戏剩余时间显示, 由于游戏刚开始,所以直接设置

7、为g_fMaxGameTimem_pTime-SetTextValue(m_fGameTime);/ 隐藏 按空格开始游戏 这个提示图片m_pKaishi-SetSpriteVisible(false);/ 隐藏鼠标CSystem:ShowCursor(false);4) 最后在Main.cpp中的OnKeyDown函数里面添加对我们自定义函数的调用:g_GameMain.OnKeyDown(iKey,bAltPress,bShiftPress,bCtrlPress);4、 游戏初始化之后,每次系统刷新界面的时候对游戏总共的时间m_fGameTime减去一个fDeltaTime,这样整体效果是

8、游戏时间在不断的减少,判断游戏时间如果小于0,则游戏结束,回到空格开始界面。如果不是,则在地图的左上角消失当前剩余的时间。在GameRun函数里面添加如下代码:1) 判断游戏时间是否大于0,是的话,显示游戏剩余时间。更改LessonX.cpp中的GameMainLoop ( floatfDeltaTime )函数,将函数中case 2:if( true )GameRun( fDeltaTime );elseSetGameState(0);GameEnd();改为:case 2: if(m_fGameTime 0)GameRun( fDeltaTime );elseSetGameState(0)

9、;GameEnd(); 这样,运行时,只有当剩余时间大于0时,才会运行GameRun()函数。2) 游戏总时间减少并把剩余时间实时的显示在游戏中,在GameRun()中添加代码: m_fGameTime -= fDeltaTime;m_pTime-SetTextValue(int)m_fGameTime);3) 如果游戏时间小于等于0,则设置游戏状态为游戏结束,在GameEnd()函数中添加如下代码:m_iGameState = 0;m_pKaishi-SetSpriteVisible(true);m_fGameTime = 0.f;m_pScore-SetTextValue(int)m_fG

10、ameTime);CSystem:ShowCursor(true);m_pPaizi-SetSpritePosition(m_fPosX,m_fPosY);5、 要使拍子随鼠标移动,则要通过系统获取到鼠标的坐标位置,然后用SetSpritePosition设置拍子精灵的位置即可。1) 进入LessonX.h中添加我们的自定义函数声明:voidOnMouseMove( const float fMouseX, const float fMouseY );2) 进入LessonX.cpp中添加该函数的定义:void CGameMain:OnMouseMove( const float fMouse

11、X, const float fMouseY )3) 如果当前游戏状态是初始化或者正在进行中,则将鼠标位置赋给拍子,在上面的函数中添加如下代码:if(m_iGameState=1|m_iGameState=2)m_pPaizi-SetSpritePosition(fMouseX, fMouseY);4) 在Main.cpp中的OnMouseMove函数中添加对我们自定义函数的调用:g_GameMain.OnMouseMove(fMouseX,fMouseY);实验三 拍子模拟拍打动作【实验内容】步骤一、拍子模拟拍打飞虫的动作【实验思路】在系统鼠标单击函数里面处理拍子拍打动作。设置拍子角度改变,

12、同时设置一个动作时间,在游戏过程中不断减少该时间的值,如果改值为0,则恢复拍子的角度,这样整体的效果就是拍打的动作。【实验指导】1、 进入LessonX.h中添加下面的成员变量声明:floatm_fRotateTime;/ 拍子拍下后距离复位还差多少时间floatm_fOldRotation;/ 拍子的初始角度2、 在LessonX.cpp的构造函数中初始化以上的成员变量:m_fRotateTime=0.f;m_fOldRotation=0.f;3、 获取拍子的初始角度并保存,在GameInit中添加下面一行代码:m_fOldRotation=m_pPaizi-GetSpriteRotatio

13、n();4、 添加一个自定义函数来处理拍子角度改变的动作。1) 在LessonX.h中添加自定义函数的声明:voidOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY );2) 在LessonX.cpp中添加该函数的定义:void CGameMain:OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )3) 判断游戏的状态是否是初始化或者进行中,是的话则改变拍子的角度,设置一个拍下的动作时间

14、。在上面的函数定义中添加以下代码:if(m_iGameState=1|m_iGameState=2)m_pPaizi-SetSpriteRotation(m_fOldRotation - 10);m_fRotateTime=0.2f;4) 在Main.cpp中的OnMouseClick函数中添加对自定义函数的调用:g_GameMain.OnMouseClick(iMouseType,fMouseX,fMouseY);5、 在游戏中判断拍子拍下后,动作时间是否达到了0,是的话恢复拍子的角度。在GameRun中添加下面的代码:if(m_fRotateTime 0)m_fRotateTime -= fDeltaTime;if(m_fRotateTime = 0)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号