GameStateEnd.hpp
上传用户:zhj2929
上传日期:2022-07-23
资源大小:28772k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #ifndef _GAME_STATES_END_H_
  2. #define _GAME_STATES_END_H_
  3. #include "GameState.h"
  4. #include "../../JGE/include/JDistortionMesh.h"
  5. #define GAMESCREEN_WIDTH  512
  6. #define GAMESCREEN_HEIGHT 480
  7. class GameStateEnd:public GameState
  8. {
  9. private:
  10. JTexture* bgTexture;//背景图片
  11. int i;
  12. JLBFont* mPrint;
  13. float x, y;
  14. int number;
  15. int rendspeed;
  16. //Mesh特效
  17. JDistortionMesh* dis;
  18. int nRows;
  19.     int nCols;
  20.     float meshx;
  21.     float meshy;
  22. public:
  23. GameStateEnd(GameApp* app): GameState(app) 
  24. {
  25. bgTexture = NULL;
  26. dis =NULL;
  27. }
  28. virtual ~GameStateEnd() 
  29. {
  30. }
  31. virtual void Create() 
  32. {
  33. mEngine->LoadMP3("music/ending.mp3");
  34. if(i==4)
  35. {
  36.   bgTexture = mEngine->LoadTexture("backgroud/end4.png", true);
  37. }
  38. else if(i==3)
  39. {
  40.           bgTexture = mEngine->LoadTexture("backgroud/end3.png", true);
  41. }
  42. else if(i==2)
  43. {
  44.           bgTexture = mEngine->LoadTexture("backgroud/end2.png", true);
  45. }
  46. else
  47. {
  48.           bgTexture = mEngine->LoadTexture("backgroud/end1.png", true);
  49. }
  50. nRows=16;
  51.     nCols=16;
  52. dis = new JDistortionMesh(bgTexture, 0.0f, 0.0f, GAMESCREEN_WIDTH, GAMESCREEN_HEIGHT, nCols, nRows);
  53. mPrint=new JLBFont("f3",16,true);
  54. }
  55. virtual void Destroy() 
  56. {
  57. if (bgTexture)
  58. mEngine->FreeTexture(bgTexture);
  59. if (mPrint)
  60. delete mPrint;
  61. if (dis) delete dis;
  62. }
  63. virtual void Start()
  64. {
  65.  mEngine->PlayMP3();
  66.  x=200.0f;
  67.      y=200.0f;
  68.  number=1;
  69.      rendspeed=500;
  70.          meshx=0.0f;
  71.          meshy=0.0f;
  72. }
  73. virtual void End()
  74. {
  75. mEngine->EnableVSync(false);
  76. mEngine->StopMP3();
  77. mEngine->FreeMP3();
  78. }
  79. virtual void Update()
  80. {
  81. float dt = mEngine->GetDelta();
  82.     
  83. static float t=0.0f;
  84.     int i, j, col;
  85.     t+=dt;
  86.     for(i=0;i<nRows;i++)
  87.    for(j=1;j<nCols-1;j++)
  88.    {
  89.    dis->SetDisplacement(j,i,cosf(t*5+j/2)*5,0);
  90.    col=int((cosf(t*5+(i+j)/2)+1)*35);
  91.    dis->SetColor(j,i,0xFF<<24 | col<<16 | col<<8 | col);
  92.    
  93.    }
  94.        rendspeed--;
  95.    if(number==0)
  96.    {
  97.     mApp->LoadGameStateSplash();
  98. mApp->SetNextState(GAME_STATE_SPLASH);
  99.    return;
  100.    }
  101. }
  102. virtual void Render() 
  103. {
  104. mEngine->ClearScreen(ARGB(255,255,255,255));
  105.    
  106.    //背景的渲染
  107. dis->Render(meshx, meshy);
  108. mPrint->SetColor(ARGB(255,255,255,255));
  109.     if(number==1&&rendspeed)
  110.     {
  111. x=200;
  112.     mPrint->printf(x,y,"%s", "Game Over!");
  113.      }
  114.      else if(number==2&&rendspeed)
  115.     {
  116.    x=150;
  117.    mPrint->printf(x, y,"%s", "Code:Second team");
  118.     }
  119.     else if(number==3&&rendspeed)
  120.     {
  121. x=100;
  122.    mPrint->printf(x, y,"%s", "Team Member:Snow Angel");
  123.     }
  124.     else if(number==4&&rendspeed)
  125.     {
  126.   x=200;
  127.   mPrint->printf(x, y,"%s", "Hersey");
  128.     }
  129.     else if(number==5&&rendspeed)
  130.     {
  131.    x=150;
  132.    mPrint->printf(x, y,"%s", "Yang Bo");
  133.     }
  134.     else if(number==6&&rendspeed)
  135.     {
  136.   x=200;
  137.   mPrint->printf(x, y,"%s", "Cathy");
  138.     }
  139.     else if(number==7&&rendspeed)
  140.     {
  141.   x=200;
  142.   mPrint->printf(x, y,"%s", "Ring");
  143.     }
  144.     else if(number==8&&rendspeed)
  145.    {
  146.      x=200;
  147.  mPrint->printf(x, y,"%s", "One");
  148.     }
  149.     else if(number==9&&rendspeed)
  150.     {
  151.    x=100;
  152.    mPrint->printf(x, y,"%s", "Thanks for Your Support!");
  153.     }
  154. else if(number==0)
  155. {
  156. }
  157.     if(!rendspeed)
  158.     {
  159.   rendspeed=500;
  160.   if(number==1)
  161.   {
  162. number=2;
  163.   }
  164.   else if(number==2)
  165.   {
  166. number=3;
  167.   }
  168.           else if(number==3)
  169.   {
  170. number=4;
  171.   }
  172.   else if(number==4)
  173.   {
  174. number=5;
  175.   }
  176.   else if(number==5)
  177.   {
  178. number=6;
  179.   }
  180.   else if(number==6)
  181.   {
  182. number=7;
  183.   }
  184.   else if(number==7)
  185.   {
  186. number=8;
  187.   }
  188.   else if(number==8)
  189.   {
  190. number=9;
  191.   }
  192.   else if(number==9)
  193.   {
  194. number=0;
  195.   }
  196. }
  197. }
  198. virtual void setI(int j) 
  199. {
  200.        i=j;   
  201. }
  202. };
  203. #endif