ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:2.01MB ,
资源ID:29628533      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29628533.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(游戏黄金矿工设计思路.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

游戏黄金矿工设计思路.docx

1、游戏黄金矿工设计思路实验:黄金矿工完成本实验后,可以实现矿工抓金子并计分的效果,如下所示:复制金块学习目标学习应用dGetScreenLeft,dGetScreenRight,dGetScreenTop,dGetScreenBottom学习应用srand函数。这节我们实现黄金矿工的金块随机分布,并设置不同金块的大小,为后续的抓取金块做好准备。Step1:图片资源导入新建一个新的项目,取名为GoldenManDemo。添加如图所示资源到环境中:并按如下所示布置图片位置:并为金子取名为goldTemplateStep2:本实验用到的API/* dGetScreenLeft:获取世界边界之左边X坐标

2、* 返回值:左边界X坐标*/extern float dGetScreenLeft();/* dGetScreenTop:获取世界边界之上边Y坐标* 返回值:上边界Y坐标*/extern float dGetScreenTop();/* dGetScreenRight:获取世界边界之右边X坐标* 返回值:右边界X坐标*/extern float dGetScreenRight();/* dGetScreenBottom:获取世界边界之下边Y坐标* 返回值:下边界Y坐标*/extern float dGetScreenBottom();/* dSetSpriteWidth:设置精灵外形宽度* 参

3、数 szName:精灵名字* 参数 fWidth:宽度值,大于0*/extern void dSetSpriteWidth( const char *szName, const float fWidth );/* dGetSpriteWidth:获取精灵外形宽度* 参数 szName:精灵名字* 返回值:精灵宽度值*/extern float dGetSpriteWidth( const char *szName );/* dRandomRange:获取一个位于参数1到参数2之间的随机数* 返回值:int,范围iMin - iMax* 参数 iMin:小于iMax的整数* 参数 iMax:大于

4、iMin的整数*/extern int dRandomRange( const int iMin, const int iMax );Step 3:思路阐述要实现金块的随机分布,首先需要利用模板复制一定数量的金块,然后将他们随机布置在窗口中,可以通过dSetSpritePosition来设置金块的横纵坐标。接下来要面临的问题就是,如何获取窗口中不同位置的坐标。利用dGetScreenLeft,dGetScreenRight,dGetScreenBottom,dGetScreenTop来获取窗口的范围,然后使用dRandomRange在该范围中随机一个新的坐标。对于金块的大小设置,可以利用dSe

5、tSpriteHeight和dSetSpriteWidth来实现。Step 4:代码详解首先定义全局变量,定义如下全局变量:int g_fGoldBornMinX = 0;int g_fGoldBornMaxX = 0;int g_fGoldBornMinY = 0;int g_fGoldBornMaxY = 0;int g_iGoldCount = 0;金块布置属于初始化工作,在WinMain的初始化部分添加如下代码:dSetWindowTitle(黄金矿工); g_iGoldCount=20; /金子数量 g_fGoldBornMinX = dGetScreenLeft() + 5; /金

6、子左边界 g_fGoldBornMaxX = dGetScreenRight() - 5; /金子右边界 g_fGoldBornMinY = dGetScreenTop() + 20; /金子上边界 g_fGoldBornMaxY = dGetScreenBottom() 5; /金子下边界 利用循环生成20个金子,以goldTemplate为模板int iLoop = 0; /循环变量控制 int iSize = 4, iPosX = 0, iPosY = 0; /iSize表示金块大小的变量 for( iLoop = 0; iLoop g_iGoldCount; iLoop+ ) if(

7、iLoop = 10 & iLoop = 180.f ) /大于180,置为向右转,即0 g_fHookRotation = 180.f; iHookRotToLeft = 0; Else /向右转,度数不断变小 g_fHookRotation -= fThisRotate; /小于0,置为向左转,即 1 if( g_fHookRotation = 180.f ) g_fHookRotation = 180.f; iHookRotToLeft = 0; else g_fHookRotation -= fThisRotate; if( g_fHookRotation = 0.f ) g_fHoo

8、kRotation = 0.f; iHookRotToLeft = 1; dSetSpriteRotation(GoldHook,g_fHookRotation); 最后,还是在while循环中,添加画线连接的操作: / 首先,从矿工精灵上获取一个缆绳链接点作为绳子的起始点(该链接点在编辑器里编辑好) float fStartX = dGetSpriteLinkPointPosX(GoldMan,1); float fStartY = dGetSpriteLinkPointPosY(GoldMan,1); / 绳子终点在钩子精灵上获取(该链接点在编辑器里编辑好) float fEndX = d

9、GetSpriteLinkPointPosX(GoldHook,1); float fEndY = dGetSpriteLinkPointPosY(GoldHook,1); / 在这两点之间划线.线的颜色红绿蓝值都为50,即灰色;255表示不透明,2.0f表示线的粗细, 0表示所在的层 dDrawLine(fStartX, fStartY, fEndX, fEndY, 2.f, 0, 50, 50, 50, 255 ); 编译运行,在适当的位置按,可以发现钩子跟着绳索一起释放,如图:练 习:1. 使钩子在抓到金块时以初始速度0.8倍的速度返回,碰到边界时则以两倍的速度返回。抓取金子学习目标学习

10、应用dSetSpriteLinearVelocityPolar,dAnimateSpritePlayAnimation,dGetSpritePositionX dGetSpritePositionY函数学习strcpy函数有了前面的基础,我们可以顺利的释放绳索了,然而当钩子在碰到金块时会穿过去而不会将其抓住并拉回来。这节我们就来实现黄金矿工抓取金块并拖回的操作。Step1:图片资源编辑点击地图上的钩子精灵,选择“编辑此精灵的链接点”,如图所示添加1链接点,保存即可。 在WinMain的复制金子前给钩子加上发送碰撞属性: dSetSpriteCollisionSend(goldHook, 1);

11、 在WinMain的复制金子前给金块加上接受碰撞属性: dSetSpriteCollisionReceive(goldTemplate, 1); 注意:不要勾上 接受物理碰撞与发送物理碰撞,否则funcode会自己处理碰撞Step2:Funcode接口介绍 /* dOnSpriteColSprite:精灵与精灵碰撞后将被调用的函数,可在此函数体里(Main.cpp)* 增加自己的响应代码* 精灵之间要产生碰撞,必须在编辑器或者代码里设置精灵发送及接受碰撞* 参数 szSrcName:发起碰撞的精灵名字* 参数 szTarName:被碰撞的精灵名字*/extern void dOnSpriteC

12、olSprite( const char *szSrcName, const char *szTarName );/* dSpriteMountToSpriteLinkPoint:将一个精灵绑定到另一个精灵上,绑定位置为指定* 的链接点,暂时的成为另一个精灵的一部分,跟随其运动等* 参数 szSrcName:要绑定的精灵名字* 参数 szDstName:承载绑定的母体精灵名字* 参数 iPointId:链接点序号* 返回值:返回一个绑定ID*/extern int dSpriteMountToSpriteLinkPoint( const char *szSrcName, const char

13、*szDstName, const int iPointId );/* dGetSpritePositionX:获取精灵X坐标* 参数 szName:精灵名字* 返回值:精灵的X坐标*/extern float dGetSpritePositionX( const char *szName );/* dGetSpritePositionY:获取精灵Y坐标* 参数 szName:精灵名字* 返回值:精灵的Y坐标*/extern float dGetSpritePositionY( const char *szName );Step 3:思路阐述钩子抓取金块实际上就是精灵与精灵碰撞的过程,所以应该

14、在dOnSpriteColSprite中做文章。dOnSpriteColSprite中的szSrcName, szTarName可以判定碰撞的对象是否是金块和钩子。若是,则将金块绑定在钩子精灵上,利用dSpriteMountToSpriteLinkPoint函数,将金块锚定在前面设定的钩子精灵链接点“1”。继而就是把金块往回拉的过程,事先利用dGetSpritePositionX,dGetSpritePositionY获取钩子的起始位置并保存在全局变量中,之后利用dSpriteMoveTo移回初始位置。Step 4:代码详解定义全局变量来存放钩子的初始位置float g_fHookStartP

15、osX; /存储钩子的初始X位置float g_fHookStartPosY; /存储钩子的初始Y位置char szGotGoldName20 ; /当前抓到金子的名称 在WinMain的初始化中,添加:g_fHookStartPosX = dGetSpritePositionX(GoldHook); /获取钩子的初始X坐标 g_fHookStartPosY = dGetSpritePositionY(GoldHook); /获取钩子的初始Y坐标 在dOnSpriteColSprite中添加处理金块与钩子碰撞的代码:/ 发起者为GoldHook,接受者含有GoldBlock字段 if(strcmp(szSrcName,GoldHook)= 0 & strstr(szTarName,GoldBlock)!=NULL ) dSpriteMountToSpriteLinkPoint( szTarName, GoldHook, 2 );/将金块锚定在钩子上 dSpriteMoveTo(GoldHook,g_fHo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1