已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI在核电站动力设备运行与维护中的应用
- 2026年仓库目视化管理与标识规范
- 2026年学校食堂食品追溯系统建设
- 2026年幼儿园小班家长沟通技巧
- 2026年招聘旺季劳务派遣用工方案
- 2026年幼儿园外来人员来访登记表
- 2026年疫苗接种知识家长课堂巡回讲座计划
- 2026年原材料入库至成品出库全流程物流管理
- 2026年学校管理团队项目管理能力培养
- 2026年安全事故信息报送与发布规定
- 2026年宠物摄影全景相机:360度拍摄设备体验与选购指南
- 2026春季江西铜业集团有限公司贵溪冶炼厂校园招聘变更20人笔试参考题库及答案解析
- 2026年市级科技馆科普辅导员招聘笔试科技常识模拟题
- 2026年上海市杨浦区社区工作者招聘笔试参考试题及答案解析
- 急性脑梗死静脉溶栓操作流程
- 2026年东北三省三校高三语文第二次模拟考试作文题目及范文:智能科技与养老
- 南京传媒学院辅导员真题
- 医疗器械销售合规性培训试题
- 学校室外管网施工方案
- DB11-T 2382-2024 建设工程施工消耗量标准
- 2025眼科护理指南
评论
0/150
提交评论