




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
funcode黄金矿工#include CommonAPI.h#include stdio.h#include string.hvoid DrawHookLine();int g_fGoldBornMinX = 0;int g_fGoldBornMaxX = 0;int g_fGoldBornMinY = 0;int g_fGoldBornMaxY = 0;int g_iGoldCount = 20;int g_iGameState=2;int flag=1; float Score=0.f;int flagnum=0; char szGotGoldName20 ; /当前抓到金子的名称float g_fHookRotation = 0.f;float g_fEmptyHookSpeed =35.f;float fTimeDelta;float g_fHookStartPosX; /存储钩子的初始X位置float g_fHookStartPosY; /存储钩子的初始Y位置/ 主函数入口/int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)/ 初始化游戏引擎if( !dInitGameEngine( hInstance, lpCmdLine ) )return 0;/ 游戏初始化代码 dSetWindowTitle(黄金矿工);g_fGoldBornMinX = dGetScreenLeft() + 5; /金子左边界g_fGoldBornMaxX = dGetScreenRight() - 5; /金子右边界g_fGoldBornMinY = dGetScreenTop() + 20; /金子上边界g_fGoldBornMaxY = dGetScreenBottom() - 5; /金子下边界g_fHookStartPosX = dGetSpritePositionX(GoldHook); /获取钩子的初始X坐标g_fHookStartPosY = dGetSpritePositionY(GoldHook); /获取钩子的初始Y坐标dSetSpriteCollisionSend(goldHook, 1);dSetSpriteCollisionReceive(goldTemplate, 1);const float fRotateSpeed = 45.f; / 摇摆速度,单位 度/秒int iHookRotToLeft = 1; /钩子摆动的方向:1 ;0 float fTimeDelta = dGetTimeDelta();/ 引擎主循环,处理屏幕图像刷新等工作while( dEngineMainLoop() )/ 获取两次调用之间的时间差,传递给游戏逻辑处理float fTimeDelta = dGetTimeDelta();DrawHookLine();/ 执行游戏主循环if(g_iGameState = 0)float fThisRotate = fRotateSpeed * fTimeDelta; if( iHookRotToLeft )g_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);else if(g_iGameState = 1) dSetTextValue(Score,Score);/播放拉金块的动作dAnimateSpritePlayAnimation(goldMan,GolderManAnimation3, 1 ); /获取钩子X方向的速度float fSpeedX = dGetSpriteLinearVelocityX(GoldHook); /获取钩子Y方向的速度float fSpeedY = dGetSpriteLinearVelocityY(GoldHook); /当速度接近为0时,即可判定其已到达初始点if( fSpeedX -0.00001f & fSpeedY -0.00001f )/解除金块与钩子的锚定dSpriteDismount(szGotGoldName); /删除获取的金块dDeleteSprite(szGotGoldName); /回拉结束,设定状态为0g_iGameState = 0; if(flagnum)g_iGoldCount-;/ 播放挖金者的动作(恢复初始守候动作)dAnimateSpritePlayAnimation(goldMan, GolderManAnimation2, 1);if(g_iGoldCount=0)g_iGameState = 0;Score=0;dSetSpriteVisible(GameBegin,1); g_iGoldCount = 20;flag=1; ;dAnimateSpritePlayAnimation(goldMan, GolderManAnimation2, 1);/ 关闭游戏引擎dShutdownGameEngine();return 0;/=/ 引擎捕捉鼠标移动消息后,将调用到本函数void dOnMouseMove( const float fMouseX, const float fMouseY )/ 可以在此添加游戏需要的响应函数/=/ 引擎捕捉鼠标点击消息后,将调用到本函数void dOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )/ 可以在此添加游戏需要的响应函数/=/ 引擎捕捉键盘按下消息后,将调用到本函数/ iAltPress iShiftPress iCtrlPress 分别为判断Shift,Alt,Ctrl当前是否也处于按下状态。比如可以判断Ctrl+E组合键void dOnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress )/ 可以在此添加游戏需要的响应函数if(iKey=KEY_SPACE)g_iGameState = 1; / 初始化之后,将游戏状态设置为进行中dSetSpriteVisible(GameBegin,0);/生成金子int iLoop = 0; /循环变量控制int iSize = 4, iPosX = 0, iPosY = 0; /iSize表示金块大小的变量if(flag)for( iLoop = 0; iLoop g_iGoldCount; iLoop+ )if( iLoop = 10 & iLoop 16 )/生成6个中金块,大小为6iSize = 6;else/生成4个大金块,大小为8iSize = 8;/初始化金子精灵实例char* tmpName;/生成金块名字tmpName=dMakeSpriteName(GoldBlock,iLoop); dCloneSprite(goldTemplate,tmpName);/设置金块的宽度dSetSpriteWidth(tmpName,(float)iSize);/设置金块的高度 dSetSpriteHeight(tmpName,(float)iSize); /设置金子精灵位置iPosX = dRandomRange(g_fGoldBornMinX, g_fGoldBornMaxX);iPosY = dRandomRange(g_fGoldBornMinY, g_fGoldBornMaxY);dSetSpritePosition(tmpName,(float)iPosX, (float)iPosY);flag=0;if(g_iGoldCount=0)flag=1;g_iGoldCount=20;if( iKey = KEY_S &g_iGameState =0 ) /按下并且游戏状态为 0 g_iGameState = 2; /置游戏状态为2,可用于控制钩子是否摆动/ 以当前朝向给钩子一个向前的速度dSetSpriteLinearVelocityPolar(GoldHook,g_fEmptyHookSpeed,g_fHookRotation);/ 播放挖金者的动作(一个胳膊往下压的动作)dAnimateSpritePlayAnimation(goldMan,GolderManAnimation1, 0);/0 表示播放一次,这里胳膊往下压就是一次 /=/ 引擎捕捉键盘弹起消息后,将调用到本函数void dOnKeyUp( const int iKey )/ 可以在此添加游戏需要的响应函数/=/ 引擎捕捉到精灵与精灵碰撞之后,调用此函数void dOnSpriteColSprite( const char *szSrcName, const char *szTarName )/ 发起者为GoldHook,接受者含有GoldBlock字段if(strcmp(szSrcName,GoldHook)= 1 & strstr(szTarName,GoldBlock)!=NULL )/将金块锚定在钩子上dSpriteMountToSpriteLinkPoint( szTarName, GoldHook, 2 );/使钩子向初始位置移动,即会拉dSpriteMoveTo(GoldHook,g_fHookStartPosX,g_fHookStartPosY, g_fEmptyHookSpeed, 1);/复制并保存当前抓取到金块的名称strcpy(szGotGoldName,szTarName); / 发起者为GoldHook,接受者含有GoldBlock字段/ 根据金子大小,计算钩子的往回收的速度,越大的越慢。/ 算法:之前设置的金子大小为4,6,8,用10减去该大小再除以10,得到3个小数:0.6,0.4,0.2.该小数乘以空钩子的速度即得到挂接不同金子后的实际速度float fWidth = dGetSpriteWidth( szTarName );float fSpeed = (10.f - fWidth) / 10.f) * g_fEmptyHookSpeed;Score+=fWidth;/ 钩子往初始位置移动 dSpriteMoveTo( goldhook, g_fHookStartPosX, g_fHookStartPosY, fSpeed, 1);/播放拉金块的动作dAnimateSpritePlayAnimation(goldMan,GolderManAnimation1, 0 ); g_iGameState = 1;flagnum=1;/=/ 引擎捕捉到精灵与世界边界碰撞之后,调用此函数./ iColSide : 0 左边,1 右边,2 上边,3 下边void dOnSpriteColWorldLimit( const char *szName, const int iColSide )if(strcmp(szName,GoldHook)!=0) /碰到边界的为钩子时/同样设置为回拉,只是没有碰到金子dSpriteMoveTo(szName,g_fHookStartPosX,g_fHookStartPosY, g_fEmptyHookSpeed, 1);/播放拉金块的动作dAnimateSpritePlayAnimation(goldMan,GolderManAnimation3, 0); g_iGameState = 1;flagnum=0; void DrawHookLine()/ 首先,从矿工精灵上获取一个缆绳链接点作为绳子的起始点 float fStartX = dGetSpriteLinkPointPosX( GoldMan, 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市投资建设集团档案管理制度
- 纺织机械专用零、部件企业数字化转型与智慧升级战略研究报告
- 石膏制品模制成型机械企业数字化转型与智慧升级战略研究报告
- 节能型辊道窑企业数字化转型与智慧升级战略研究报告
- 大功率光纤激光器企业ESG实践与创新战略研究报告
- 切丝机(加工水果、蔬菜用)企业ESG实践与创新战略研究报告
- 菊花茶企业县域市场拓展与下沉战略研究报告
- 养猪分红合同样本
- 劳动合同样本安徽
- 出售水泥填充料合同标准文本
- 骆驼祥子考点单选题100道及答案解析
- 新教科版小学1-6年级科学需做实验目录
- 住院患者探视登记表
- 废气处理工程施工方案模板
- 境外所得个税新政解析PPT课件
- 工程网络计划技术概述
- 《不定期船营运管理模拟系统》实验指导书
- 华上集团基本法讲述
- s参数定义、矢量网络分析仪基础知识和s参数测量义讲
- 重症培训重症监测的基本原则和方法
- 球墨铸铁管安装施工方案(完整版)
评论
0/150
提交评论