鱼游戏

xiaoxiao2021-02-28  117

//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- #include "CommonAPI.h" #include "LessonX.h" #include <bits/stdc++.h> float g_fScreenLeft= 0.f;    // 屏幕左边界值 float g_fScreenRight= 0.f;    // 右 float g_fScreenTop= 0.f;    // 上 float g_fScreenBottom= 0.f;    // 下 float        g_fSpeedLeft        =    0.f;      // 左方向速度 float        g_fSpeedRight        =    0.f;      // 右 float        g_fSpeedTop        =    0.f;      // 上 float        g_fSpeedBottom    =    0.f;      // 下 void Swimming() {     if((g_fSpeedLeft + g_fSpeedRight) > 0)         dSetSpriteFlipX("myfish", false);     else if((g_fSpeedLeft + g_fSpeedRight) < 0)         dSetSpriteFlipX("myfish", true);     dSetSpriteLinearVelocity("myfish", g_fSpeedLeft + g_fSpeedRight, g_fSpeedTop + g_fSpeedBottom); } /// // // 主函数入口 // // int PASCAL WinMain(HINSTANCE hInstance,                    HINSTANCE hPrevInstance,                    LPSTR     lpCmdLine,                    int       nCmdShow) {     // 初始化游戏引擎     if( !dInitGameEngine( hInstance, lpCmdLine ) )         return 0;     g_fScreenLeft = dGetScreenLeft();     g_fScreenRight  = dGetScreenRight();     g_fScreenTop = dGetScreenTop();     g_fScreenBottom  = dGetScreenBottom();     dSetSpriteWorldLimit("myfish", WORLD_LIMIT_NULL, g_fScreenLeft, g_fScreenTop, g_fScreenRight, g_fScreenBottom);     for(int i=0; i<4; i++)     {         char  szName[128];         float fPosX, fPosY;         float fSpeedX;         sprintf(szName, "fish%d", i);         dCloneSprite("yu_muban", szName);         fPosX = dRandomRange(g_fScreenLeft+10.f, g_fScreenRight-10.f);         fPosY = dRandomRange(g_fScreenTop+10.f, g_fScreenBottom-10.f);         dSetSpritePosition(szName, fPosX, fPosY);         fSpeedX = dRandomRange(10, 20);         dSetSpriteLinearVelocity(szName, fSpeedX, 0);         dSetSpriteWorldLimit(szName, WORLD_LIMIT_NULL, g_fScreenLeft-10.f, g_fScreenTop-10.f, g_fScreenRight+10.f,                              g_fScreenBottom+10.f);     } // To do : 在此使用API更改窗口标题     dSetWindowTitle("Lesson");     // 引擎主循环,处理屏幕图像刷新等工作     while( dEngineMainLoop() )     {         // 获取两次调用之间的时间差,传递给游戏逻辑处理         float fTimeDelta= dGetTimeDelta();         // 执行游戏主循环         GameMainLoop( fTimeDelta );     };     // 关闭游戏引擎     dShutdownGameEngine();     return 0; } //========================================================================== // // 引擎捕捉鼠标移动消息后,将调用到本函数 void dOnMouseMove( const float fMouseX, const float fMouseY ) {     // 可以在此添加游戏需要的响应函数 } //========================================================================== // // 引擎捕捉鼠标点击消息后,将调用到本函数 void dOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY ) {     // 可以在此添加游戏需要的响应函数 } //========================================================================== // // 引擎捕捉鼠标弹起消息后,将调用到本函数 void dOnMouseUp( 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 ) {     // 可以在此添加游戏需要的响应函数     switch(iKey)     {     case KEY_W:         g_fSpeedTop = -10.f;         break;     case KEY_A:         g_fSpeedLeft = -15.f;         break;     case KEY_S:         g_fSpeedBottom = 10.f;         break;     case KEY_D:         g_fSpeedRight = 15.f;         break;     default:         break;     }     Swimming(); } //========================================================================== // // 引擎捕捉键盘弹起消息后,将调用到本函数 void dOnKeyUp( const int iKey ) {     // 可以在此添加游戏需要的响应函数     switch(iKey)     {     case KEY_W:         g_fSpeedTop = 0.f;         break;     case KEY_A:         g_fSpeedLeft = 0.f;         break;     case KEY_S:         g_fSpeedBottom = 0.f;         break;     case KEY_D:         g_fSpeedRight = 0.f;         break;     }     Swimming(); } //=========================================================================== // // 引擎捕捉到精灵与精灵碰撞之后,调用此函数 void dOnSpriteColSprite( const char *szSrcName, const char *szTarName ) { } //=========================================================================== // // 引擎捕捉到精灵与世界边界碰撞之后,调用此函数. // iColSide : 0 左边,1 右边,2 上边,3 下边 void dOnSpriteColWorldLimit( const char *szName, const int iColSide ) {     bool    bFlip;     float    fSpeedX;     float    fPosY;     if(strstr(szName, "fish")!=NULL)     {         if(strcmp(szName, "myfish") == 0)      // myfish精灵         {             if(iColSide==2||iColSide==3)             {                 dSetSpriteLinearVelocity("myfish", g_fSpeedLeft + g_fSpeedRight, 0);             }             else if(iColSide==0||iColSide==1)             {                 dSetSpriteLinearVelocity("myfish", 0, g_fSpeedTop +g_fSpeedBottom);             }         }         else         { // 另外4条鱼             if(iColSide == 1)  // 右边             {                 bFlip = true;                 fSpeedX = -dRandomRange(10, 20);             }             else if(iColSide == 0)   // 左边             {                 bFlip = false;                 fSpeedX = dRandomRange(10, 20);             }             dSetSpriteFlipX(szName, bFlip);             dSetSpriteLinearVelocity(szName, fSpeedX, 0);             fPosY=dRandomRange(g_fScreenTop+10.f,g_fScreenBottom-10.f);             dSetSpritePositionY(szName, fPosY);         }     } }
转载请注明原文地址: https://www.6miu.com/read-24737.html

最新回复(0)