黄金矿工代码
//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- #include “CommonAPI.h“ #include “stdio.h“ #include “string.h“ voidDrawHookLine(); 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 szGotGoldName[20] ; //当前抓到金子的名称 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, LPSTRlpLine, intnShow) { // 初始化游戏引擎 if( !dInitGameEngine( hInstance, lpLine ) ) 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; } } else { g_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 //删除获取的金块 dDeleteSprite(szGotGoldName); //回拉结束,设定状态为 0 g_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 ) { // 可以在此添加游戏需要的响应函数 } //