cRaceCar.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:4k
源码类别:

游戏

开发平台:

Visual C++

  1. // RACE X
  2. //
  3. // Written by Mauricio Teichmann Ritter
  4. //
  5. // Copyright (C) 2002, Brazil. All rights reserved.
  6. // 
  7. //
  8. #include ".AppLibcSprite.h"
  9. #include ".applibchitchecker.h"
  10. #include ".applibcsound.h"
  11. #include <vector>
  12. #include <string>
  13. using namespace std;
  14. #if !defined(AFX_CRACECAR_H__599011FD_F0E9_4C8A_AAC5_ECA4A9FF481B__INCLUDED_)
  15. #define AFX_CRACECAR_H__599011FD_F0E9_4C8A_AAC5_ECA4A9FF481B__INCLUDED_
  16. #if _MSC_VER > 1000
  17. #pragma once
  18. #endif // _MSC_VER > 1000
  19. #define CTRL_COMPUTER 1
  20. #define CTRL_USER 2
  21. #define CTRL_NETWORK_REMOTE 3
  22. #define CTRL_NETWORK_LOCAL 4
  23. #define     CARSTATE_OK 1
  24. #define     CARSTATE_CRASHED_WALL 2
  25. #define     CARSTATE_CRASHED_CAR 3
  26. #define     CARSTATE_RACECOMPLETED 4
  27. typedef vector<long> LONGVECTOR;
  28. // cRaceCar定义了参加游戏的每辆赛车,这些赛车包括了颜色,id和选手名字属性
  29. class cRaceCar
  30. {
  31. private:
  32. int iTurnCar;
  33. //定义赛车爆炸时间
  34. int iCrashTime;
  35. //到一个检查站的距离(用来定位)
  36. int m_iDistanceToNextCheckPoint;
  37. //赛车位置
  38. int m_iPosition;
  39. //声音缓冲
  40. cSound m_pSound;
  41. cSound m_pCrashSound;
  42. //存储每一圈用时的Vector
  43. LONGVECTOR m_vcLapTimes;
  44. long m_lCurrentTime;
  45. //这些是赛车发生碰撞时用到的备用变量
  46. //如果赛车在发生碰撞后要重置状态,则使用这些变量
  47. int m_fBackupIncrementX;
  48. int m_fBackupIncrementY;
  49. int m_fBackupDirectionY;
  50. int m_fBackupDirectionX;
  51. int m_iBackupAngle;
  52. float m_fBackupPosY;
  53. float m_fBackupPosX;
  54. int iBackupTurnCar;
  55. int m_iBackupDistanceToNextCheckPoint;
  56. //赛车当前状态
  57. int m_iCarState;
  58. void TurnCarRight();
  59. void TurnCarLeft();
  60. //定义赛车如何控制(电脑,人,还是网络)
  61. int m_iControlType;
  62. //定义如何增加X 和Y 位置
  63. int m_fIncrementX;
  64. int m_fIncrementY;
  65. //赛车当前速度
  66. int m_iSpeed;
  67. //赛车最高速度
  68. int m_iMaxSpeed;
  69. //赛车在赛道地图上的当前位置
  70. float m_fPosY;
  71. float m_fPosX;
  72. //上次赛车转向的时间
  73. long m_lLastTurn;
  74. //赛车上次加速时间
  75. long m_lLastSpeedIncr;
  76. // 标志X和Y的方向
  77. int m_fDirectionY;
  78. int m_fDirectionX;
  79. //多边形边界
  80. POINT *m_pBound;
  81. public:
  82. void MoveForward(int iSpeed);
  83. void Backup();
  84. DWORD m_dwElapseTime;
  85. void AddLapTime(DWORD dwTime);
  86. void SetSpeed(int iValue);
  87. BYTE m_bLastSent_Speed;
  88. BYTE m_bLastSent_Position;
  89. BYTE m_bLastSent_CarState;
  90. BYTE m_bLastSent_Laps;
  91. BYTE m_bLastSent_Angle;
  92. DWORD m_dwLastSent_LastLapTime;
  93. unsigned short m_nLastSent_PosX;
  94. unsigned short m_nLastSent_PosY;
  95. BYTE m_bRemoteKeyboardStatus;
  96. int m_iAngle;
  97. BYTE GetID();
  98. void SetID(BYTE iValue);
  99. BYTE m_bID;
  100. int GetCarColor();
  101. long GetLastLapTime();
  102. long GetLapElapseTime(int iLap = -1);
  103. int GetDistanceToNextCheckPoint();
  104. void SetPosition(int iPosition);
  105. int GetPosition();
  106. int m_iLaps;
  107. int m_iBackupSprite;
  108. void Crashed();
  109. int GetCarState();
  110. void SetCarState(int iState);
  111. void Idle();
  112. void HitCar();
  113. void BreakCar();
  114. void Accelerate();
  115. int GetControlType();
  116. void SetControlType(int iType);
  117. int GetSpeed();
  118. int m_iCheckPoint;
  119. int GetLastCheckPoint();
  120. void SetLastCheckPoint(int iLastCheckPoint);
  121. cHitChecker m_hcRaceCar;
  122. void GetPos(int* iX, int* iY);
  123. void Process(void* pTrack);
  124. void Destroy();
  125. void Create(int iColor);
  126. void Draw(int nViewX, int nViewY);
  127. void SetPos(int iX, int iY);
  128. cSprite m_sprCar;
  129. cSprite m_sprCarExplode_0;
  130. cSprite m_sprCarExplode_45;
  131. cSprite m_sprCarExplode_90;
  132. cSprite m_sprCarExplode_135;
  133. cSprite m_sprCarExplode_180;
  134. cSprite m_sprCarExplode_225;
  135. cSprite m_sprCarExplode_270;
  136. cSprite m_sprCarExplode_315;
  137. cRaceCar();
  138. virtual ~cRaceCar();
  139. protected:
  140. int m_iColor;
  141. void RotateBound(int iAngle);
  142. };
  143. #endif // !defined(AFX_CRACECAR_H__599011FD_F0E9_4C8A_AAC5_ECA4A9FF481B__INCLUDED_)