《游戏“黄金矿工”设计思路》由会员分享,可在线阅读,更多相关《游戏“黄金矿工”设计思路(22页珍藏版)》请在金锄头文库上搜索。
1、word实验:黄金矿工完本钱实验后,可以实现矿工抓金子并计分的效果,如下所示:复制金块学习目标学习应用dGetScreenLeft,dGetScreenRight,dGetScreenTop,dGetScreenBottom学习应用srand函数。这节我们实现黄金矿工的金块随机分布,并设置不同金块的大小,为后续的抓取金块做好准备。Stepl:图片资源导入新建一个新的项目,取名为GoldenManDemo。添加如下列图资源到环境中:口美的窗口时秆放国片费函玷用低配置叽GunRcotlniageMapBeginfriiageMspminiufoal(liiiagellap1miniufoaltli
2、nagEhyiap?GunFcot2lrnageMapGunSody2lmageMapGolderB时邮mag邮叶GokleiManlmagef.lapGakJerTocIlmsgeMapPictureDlYlairiplelmageMa|PicrureDIYIImageMapPicrureDIYSImageMap口iciuieDtY31m3geMapPicturftDl4lmageMepPiclureDiP5tmagel.lapPidureDlVfilniageldapPicrureDiY7lmageMapPicrureDIYSInisg期叩PictureDiYSimageWBpPiclur
3、eDIY1OlmageMaD并按如下所示布置图片位置:并为金子取名为goldTemplateStep2:本实验用到的API/*dGetScreenLeft:获取世界边界之左边X坐标* 返回值:左边界X坐标* /externfloatdGetScreenLeft();/*dGetScreenTop:获取世界边界之上边Y坐标* 返回值:上边界Y坐标* /externfloatdGetScreenTop();/*dGetScreenRight:获取世界边界之右边X坐标* 返回值:右边界X坐标* /externfloatdGetScreenRight();/*dGetScreenBottom:获取世界
4、边界之下边Y坐标* 返回值:下边界Y坐标* /externfloatdGetScreenBottom();/*dSetSpriteWidth:设置精灵外形宽度* 参数szName:精灵名字* 参数fWidth:宽度值,大于0* /externvoiddSetSpriteWidth(constchar*szName,constfloatfWidth);/*dGetSpriteWidth:获取精灵外形宽度* 参数szName:精灵名字* 返回值:精灵宽度值* /externfloatdGetSpriteWidth(constchar*szName);* *dRandomRange:获取一个位于参数
5、1到参数2之间的随机数* 返回值:int,X围iMin-iMax* 参数iMin:小于iMax的整数* 参数iMax:大于iMin的整数* /externintdRandomRange(constintiMin,constintiMax);Step3:思路阐述要实现金块的随机分布,首先需要利用模板复制一定数量的金块,然后将他们随机布置在窗口中,可以通过dSetSpritePosition来设置金块的横纵坐标。接下来要面临的问题就是,如何获取窗口中不同位置的坐标。禾1J用dGetScreenLeft,dGetScreenRight,dGetScreenBottom,dGetScreenTop来获
6、取窗口的X围,然后使用dRandomRange在tX围中随机一个新的坐标。对于金块的大小设置,可以利用dSetSpriteHeight和dSetSpriteWidth来实现。Step4:代码详解首先定义全局变量,定义如下全局变量:intgfGoldBornMinX=0;intgfGoldBornMaxX=0;intgfGoldBornMinY=0;intgfGoldBornMaxY=0;intgiGoldCount=0;金块布置属于初始化工作,在WinMain的初始化局部添加如下代码:dSetWindowTitle(黄金矿工);giGoldCount=20;/金子数量gfGoldBornMin
7、X=dGetScreenLeft()+5;/金子左边界gfGoldBornMaxX=dGetScreenRight()-5;/金子右边界gfGoldBornMinY=dGetScreenTop()+20;/金子上边界gfGoldBornMaxY=dGetScreenBottom()5;/金子下边界利用循环生成20个金子,以goldTemplate为模板intiLoop=0;/循环变量控制intiSize=4,iPosX=0,iPosY=0;/iSize表示金块大小的变量for(iLoop=0;iLoopg_iGoldCount;iLoop+)if(iLoop=10&iLoop=180.f)/大
8、于180,置为向右转,即0gfHookRotation=180.f;iHookRotToLeft=0;Else/向右转,度数不断变小gfHookRotation-=fThisRotate;/小于0,置为向左转,即1if(gfHookRotation=0.f)gfHookRotation=0.f;iHookRotToLeft=1;dSetSpriteRotation(GoldHook,gfHookRotation);/设置钩子的当前角度编译运行,可得到如下所示的效果:练习:1.使钩子从左往右进展旋转释放绳索学习目标学习应用dSetSpriteLinearVelocityPolar,dAnimat
9、eSpritePlayAnimation函数学会利用全局变量来控制游戏的运行状态。这节我们实现黄金矿工在某一角度放下绳索的操作,为之后的真正抓取金子做好准备Stepl:图片资源编辑打开funcode,单击地图上的矿工精灵图像,在显示框的上面五个选择左数第二个编辑此精灵的点,如下列图按如下列图依次单击这位置显示0,保存即可。同上,点击地图上的钩子精灵,选择“编辑此精灵的点,依次单击这个位置显示0,最后保存即可。Step2:本实验用到的API/*dSetSpriteLinearVelocityPolar:按角度朝向设置精灵移动速度* 参数szName:精灵名字* 参数fSpeed:移动速度* 参数fPolar:角度朝向* /externvoiddSetSpriteLinearVelocityPolar(constchar*szName,constfloatfSpeed,constfloatfPolar);/*dAnimateSpritePlayAnimation:动画精灵播放动画* 参数szName:精灵名字* 参数szAnim:动画名字* 参数iRestore:播放完毕后是否恢复当前动画.1恢复0不恢复* 返回值:是否播放成功,1:成功0:不成功* /externintdAnimateSpritePlayA