10 c++课程设计贪吃鱼资料

上传人:w****i 文档编号:99354493 上传时间:2019-09-18 格式:DOC 页数:17 大小:847.50KB
返回 下载 相关 举报
10 c++课程设计贪吃鱼资料_第1页
第1页 / 共17页
10 c++课程设计贪吃鱼资料_第2页
第2页 / 共17页
10 c++课程设计贪吃鱼资料_第3页
第3页 / 共17页
10 c++课程设计贪吃鱼资料_第4页
第4页 / 共17页
10 c++课程设计贪吃鱼资料_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《10 c++课程设计贪吃鱼资料》由会员分享,可在线阅读,更多相关《10 c++课程设计贪吃鱼资料(17页珍藏版)》请在金锄头文库上搜索。

1、 上海锐格软件有限公司FunCode程序设计实验教材系列C+面向对象课程设计实验指南上海锐格软件有限公司课程设计二 贪吃鱼一、游戏介绍贪吃鱼是玩家用WSAD键控制鱼上下左右运动,吃掉其中比自己等级小或者相等的鱼。鱼从右侧游向左侧。游戏中有两种鱼,其中一种如果被自己等级高,就被吃掉了,另一种鱼如果等级比自己高,只扣除一定的生命值。吃到越多的鱼,小鱼就会相应的长大。二、实验目的综合应用C+语言和面向对象的知识开发一款小游戏。三、实验内容在一个深海里,玩家通过键盘WSAD键控制己方小鱼移动,吃到其中比自己等级低或者等级相等的鱼。要求如下:1、 游戏运行时,初始界面如下图。2、 按下空格键,游戏开始,

2、玩家通过WSAD键控制小鱼移动;小鱼不能游出世界边界。3、 有2种类型的鱼,普通鱼和特殊鱼。碰到普通鱼时,如果等级比自己高,小鱼就被吃掉了。碰到特殊鱼,如果等级比自己高,小鱼只是被扣掉一定的生命值。4、 敌方的小鱼都是从右向左一定。5、 玩家小鱼被吃掉后,游戏停止,重新显示初始界面。游戏初始界面四、实验指南实验准备打开FunCode,创建一个新的C+项目。注意:项目名称必须为英文和数字,且不能有空格。点击“项目”“导入地图模板”,从对话框中选取名称为eatfish的模板导入。导入成功后,界面如下:实验一 游戏开始和控制玩家小鱼【实验内容】1、 按空格键,游戏开始,“空格开始”字样消失。2、 创

3、建CMyFish类,并创建对象实例玩家控制的小鱼。3、 小鱼的初始大小为原大小的1/4。4、 小鱼左右运动的速度为30。上下运动的速度为15。5、 小鱼碰到世界边界时,静止。6、 游戏开始后,通过键盘WSAD键控制小鱼移动。7、 在游戏中显示游戏的等级和玩家控制的鱼的HP。【实验思路】按空格键开始游戏,属于键盘按下事件,我们在dOnKeyDown函数中编写代码。在游戏中,我们运用面向对象的知识将小鱼看成一个对象,并为这个对象添加一个类叫CMyFish。类具有属性和方法,要控制小鱼能在各个方向上自由的游动,我们为CMyFish类添加上下左右四个方向的速度,并且我们为小鱼添加OnMove方法控制小

4、鱼的游动状态。【实验指导】1、 在OnKeyDown中,当按下的按键为空格键并且此时的游戏状态为0,则设置游戏的状态为1。0表示此时游戏为等待状态,未开始。1表示游戏进行初始化,初始化后会进入2游戏运行状态。/ 按下空格键,游戏开始if( KEY_SPACE = iKey & 0 = GetGameState() )SetGameState( 1 );2、 在游戏初始化函数GameInit中隐藏 按空格开始游戏 这个提示图片。在CGameMain中添加成员变量:CSprite *m_pBeginSprite;在CGameMain的构造函数中进行初始化:m_pBeginSprite = new

5、CSprite(kaishi);在GameInit中添加一下代码:m_pBeginSprite-SetSpriteVisible( false );3、 通过类向导创建CMyFish类。首先添加向左、向右、向上、向下4个方向的运动速度属性。添加OnMove方法控制小鱼的游动,bKeyDown表示键盘时按下的,iKey表示相应的是哪个按键。class CMyFish : public CSprite public:CMyFish(const char *szName);virtual CMyFish();public:void OnMove(bool bKeyDown,int iKey);pri

6、vate:floatm_fVelocityLeft;/ 控制的鱼的上下左右游动速度floatm_fVelocityRight;floatm_fVelocityUp;floatm_fVelocityDown; ;4、 在CMyFish类的构造函数中,首先初始4个方向的速度为0,然后设置小鱼缩小到原图的1/4,最后设置和世界边界的碰撞属性为WORLD_LIMIT_STICKY,当碰到世界边界时,小鱼静止不动。而小鱼的世界边界大小,我们设置为比屏幕的大小大2个单位。/ 设置鱼的模型大小为1/4SetSpriteScale( 0.25f );/ 世界边界限制SetSpriteWorldLimit( W

7、ORLD_LIMIT_STICKY, CSystem:GetScreenLeft()-2.f, CSystem:GetScreenTop() - 2.f, CSystem:GetScreenRight() + 2.f, CSystem:GetScreenBottom() + 2.f );5、 编写CMyFish类OnMove方法代码。首先判断当前按键是按下还是松开的,其次判断是哪个按键的消息,根据这两个判断,为4个方向的速度矢量赋值。再次算出X后和Y轴上的速度,并设置小鱼的速度。最后根据X轴方向的速度值设置鱼的朝向。 当速度不为0的时候,更改鱼的朝向。void CMyFish:OnMove(b

8、ool bKeyDown,int iKey)if(bKeyDown)switch(iKey)case KEY_A: / 左m_fVelocityLeft =30.f;break;case KEY_D: / 右m_fVelocityRight =30.f;break;case KEY_W: / 上m_fVelocityUp =15.f;break;case KEY_S: / 下m_fVelocityDown =15.f;break;elseswitch(iKey)case KEY_A: / 左m_fVelocityLeft =0.f;break;case KEY_D: / 右m_fVelocit

9、yRight =0.f;break;case KEY_W: / 上m_fVelocityUp =0.f;break;case KEY_S: / 下m_fVelocityDown =0.f;break;float fVelX= m_fVelocityRight - m_fVelocityLeft;float fVelY = m_fVelocityDown - m_fVelocityUp;SetSpriteLinearVelocity( fVelX,fVelY );/ 当速度不为0的时候,更改鱼的朝向if( fVelX 0.0001f )if( fVelX 0.0001f )SetSpriteFl

10、ipX( false );elseSetSpriteFlipX( true );6、 在CGameMain类中,首先添加一个小鱼对象的指针m_pMyFish。其次在构造函数中将m_pMyFish赋予NULL的初始值。再次在GameInit方法中初始化m_pMyFish。因为我们用new方法创建了m_pMyFish对象,分配了内存,所以我们在CGameMain类的析构函数中需要调用delete方法将 m_pMyFish使用的内存释放掉。if( NULL = m_pMyFish )/ 创建对象实例m_pMyFish=new CMyFish(kongzhiyu);7、 在OnKeyDown和Onke

11、yUp中响应小鱼OnMove方法,它们的区别只是第一个参数的值不同。下面是OnKeyDown方法中的调用。if( 2 = GetGameState() )m_pMyFish-OnMove(true,iKey);8、 在CGameMain类的GameInit方法中显示当前等级和分数。m_pLevelText和m_pHpText需要在CGameMain类中声明,并在其构造函数中定义,其类类型为CTextSprite。/ 更新当前等级/HP显示m_pLevelText-SetTextValue( 1 );/ 等级设置为1m_pHpText-SetTextValue( 0 );/ 分数设置为0实验二

12、为游戏添加各种小鱼【实验内容】1、 创建普通鱼CNormalFish类;2、 新添的小鱼一共有4种,从鱼类模板中随机生成;3、 间隔1到2秒生成一只小鱼;4、 小鱼以随机速度从右向左移动;5、 小鱼碰到世界边界后消失;【实验思路】我们将在游戏中出现的敌方小鱼看成对象,这些对象具有共同的属性和方法,因此我们创建一个CNormalFish类。并且给这些鱼一定的速度,让他们从产生就开始运动,游过屏幕,然后到达世界边界的另一端就被删除。【实验指导】1、 根据类向导创建CNormalFish类。/ 普通类型的鱼,有等级属性。我们控制的鱼如果等级大于等于此鱼,则可以吃/ 掉其,如果小于,则被吃掉class

13、 CNormalFish : public CSpritepublic:CNormalFish( const char *szName);CNormalFish() ;2、 在CNormalFish类的构造函数中。首先生成一个1到100的随机数,根据随机数的大小,我们选择不同的小鱼模板。当随机数小于15时我们选择yu_muban4的小鱼做为模板,当随机数在15,35区间时,我们选择yu_muban3做为模板,当随机数在35,60区间时,我们选择yu_muban2做为模板,当随机数在60,100区间,我们选择yu_muban1做为模板。intiRandom=CSystem:RandomRange( 1, 100 );if( iRandom 15 )CloneSprite( yu_muban4 );else if( iRandom 35 )CloneSprite( yu_muban3 );else if( iRandom 60 )CloneSprite( yu_muban2 );elseCloneSprite( yu_muban1 );3

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

当前位置:首页 > 高等教育 > 大学课件

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