游戏“黄金矿工”设计思路.doc_第1页
游戏“黄金矿工”设计思路.doc_第2页
游戏“黄金矿工”设计思路.doc_第3页
游戏“黄金矿工”设计思路.doc_第4页
游戏“黄金矿工”设计思路.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

_实验:黄金矿工完成本实验后,可以实现矿工抓金子并计分的效果,如下所示:复制金块学习目标学习应用dGetScreenLeft,dGetScreenRight,dGetScreenTop,dGetScreenBottom学习应用srand函数。这节我们实现黄金矿工的金块随机分布,并设置不同金块的大小,为后续的抓取金块做好准备。Step1:图片资源导入新建一个新的项目,取名为GoldenManDemo。添加如图所示资源到环境中:并按如下所示布置图片位置:并为金子取名为goldTemplateStep2:本实验用到的API/* dGetScreenLeft:获取世界边界之左边X坐标* 返回值:左边界X坐标*/extern floatdGetScreenLeft();/*dGetScreenTop:获取世界边界之上边Y坐标*返回值:上边界Y坐标*/extern floatdGetScreenTop();/*dGetScreenRight:获取世界边界之右边X坐标*返回值:右边界X坐标*/extern floatdGetScreenRight();/*dGetScreenBottom:获取世界边界之下边Y坐标*返回值:下边界Y坐标*/extern floatdGetScreenBottom();/*dSetSpriteWidth:设置精灵外形宽度* 参数 szName:精灵名字* 参数 fWidth:宽度值,大于0*/extern voiddSetSpriteWidth( const char *szName, const float fWidth );/* dGetSpriteWidth:获取精灵外形宽度* 参数 szName:精灵名字* 返回值:精灵宽度值*/extern floatdGetSpriteWidth( const char *szName );/* dRandomRange:获取一个位于参数1到参数2之间的随机数* 返回值:int,范围iMin - iMax* 参数 iMin:小于iMax的整数* 参数 iMax:大于iMin的整数*/extern intdRandomRange( const int iMin, const int iMax );Step 3:思路阐述要实现金块的随机分布,首先需要利用模板复制一定数量的金块,然后将他们随机布置在窗口中,可以通过dSetSpritePosition来设置金块的横纵坐标。接下来要面临的问题就是,如何获取窗口中不同位置的坐标。利用dGetScreenLeft,dGetScreenRight,dGetScreenBottom,dGetScreenTop来获取窗口的范围,然后使用dRandomRange在该范围中随机一个新的坐标。对于金块的大小设置,可以利用dSetSpriteHeight和dSetSpriteWidth来实现。Step 4:代码详解首先定义全局变量,定义如下全局变量:int g_fGoldBornMinX=0;intg_fGoldBornMaxX=0;intg_fGoldBornMinY=0;intg_fGoldBornMaxY=0;int g_iGoldCount=0;金块布置属于初始化工作,在WinMain的初始化部分添加如下代码:dSetWindowTitle(黄金矿工);g_iGoldCount=20;/金子数量g_fGoldBornMinX=dGetScreenLeft() + 5;/金子左边界g_fGoldBornMaxX=dGetScreenRight() - 5;/金子右边界g_fGoldBornMinY=dGetScreenTop() + 20;/金子上边界g_fGoldBornMaxY=dGetScreenBottom() 5;/金子下边界利用循环生成20个金子,以goldTemplate为模板intiLoop=0;/循环变量控制intiSize=4, iPosX = 0, iPosY = 0; /iSize表示金块大小的变量for( iLoop = 0; iLoop g_iGoldCount; iLoop+ )if( iLoop = 10 & iLoop = 180.f )/大于180,置为向右转,即0g_fHookRotation=180.f;iHookRotToLeft=0;Else/向右转,度数不断变小g_fHookRotation-= fThisRotate;/小于0,置为向左转,即 1if( g_fHookRotation = 180.f )g_fHookRotation=180.f;iHookRotToLeft=0;elseg_fHookRotation-= fThisRotate;if( g_fHookRotation = 180.f )g_fHookRotation=180.f;iHookRotToLeft=0;elseg_fHookRotation-= fThisRotate;if( g_fHookRotation = 0.f )g_fHookRotation=0.f;iHookRotToLeft=1;dSetSpriteRotation(GoldHook,g_fHookRotation);添加g_iGameState = 2时的判定代码:else if(g_iGameState = 2)/获取钩子X方向的速度floatfSpeedX=dGetSpriteLinearVelocityX(GoldHook);/获取钩子Y方向的速度floatfSpeedY=dGetSpriteLinearVelocityY(GoldHook);/当速度接近为0时,即可判定其已到达初始点if( fSpeedX -0.00001f & fSpeedY -0.00001f )/解除金块与钩子的锚定dSpriteDismount(szGotGoldName);/删除获取的金块dDeleteSprite(szGotGoldName);/回拉结束,设定状态为0g_iGameState = 0;/播放矿工的动画,即准备拉金子的动画dAnimateSpritePlayAnimation(GoldMan,GolderManAnimation2, 0 );最后我们添加边界处理的代码,在dOnSpriteColWorldLimit中:if(strcmp(szName,GoldHook) = 0)/碰到边界的为钩子时dSpriteMoveTo(szName,g_fHookStartPosX, g_fHookStartPosY, g_fEmptyHookSpeed, 1);dAnimateSpritePlayAnimation(GoldMan,GolderManAnimation3, 1 );/同样设置为回拉,只是没有碰到金子g_iGame

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论