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

游戏

开发平台:

Visual C++

  1. #if !defined(AFX_CRACETRACK_H__2022F72B_F3CD_47F7_904E_11F2297090EE__INCLUDED_)
  2. #define AFX_CRACETRACK_H__2022F72B_F3CD_47F7_904E_11F2297090EE__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. #include <vector>
  7. #include <string>
  8. using namespace std;
  9. #include ".AppLibcSurface.h"
  10. #include ".AppLibcHitChecker.h"
  11. #include ".AppLibcMatrix.h"
  12. #include "cRaceCar.h"
  13. #define TURN_LEFT 10
  14. #define TURN_RIGHT  20
  15. #define TILE_SIZE   200
  16. // cRaceTrack 类主要用来控制游戏中的路径。它负责路径的载入,绘制,碰撞检测和控制当前在跑的赛车。
  17. class cRaceTrack  
  18. {
  19. private:
  20. // 当前赛道上的赛车数目
  21. int m_iNumCars;
  22. // 赛道的行数和列数,每一单元都是40x40贴图
  23. int m_iCols;
  24. int m_iRows;
  25. // 可视的赛道数
  26. int m_iViewY;
  27. int m_iViewX;
  28. // 需要完成的圈数
  29. int m_iLaps;
  30. // 赛道名称
  31. char *m_sTrackName;
  32. // 状态变量:用来表示比赛是否开始,用来控制比赛开始时的信号灯显示
  33. // 如果这个值是0,则显示第一个信号,如果是2,则显示第二个信号,当值为2之后的m_lStartTime时间后,就不再绘制信号灯
  34. int m_iState;
  35. long m_lStartTime;
  36. // 使用哪种贴片(沙漠或者草地)
  37. UINT m_Tile;
  38. //赛道中用到的贴片曲面
  39. cSurface m_surfTile;
  40. //比赛结束时旗帜的曲面
  41. cSurface m_surfRaceCompleted;
  42. //下面所有定义的曲面都代表了一种赛道贴片
  43. cSurface m_surfDiagonalQ0;
  44. cSurface m_surfDiagonalQ1;
  45. cSurface m_surfDiagonalQ2;
  46. cSurface m_surfDiagonalQ3;
  47. cSurface m_surfMidDiagonalQ0;
  48. cSurface m_surfMidDiagonalQ1;
  49. cSurface m_surfMidDiagonalQ2;
  50. cSurface m_surfMidDiagonalQ3;
  51. cSurface m_surfBlackPointQ0;
  52. cSurface m_surfBlackPointQ1;
  53. cSurface m_surfBlackPointQ2;
  54. cSurface m_surfBlackPointQ3;
  55. cSurface m_surf_HZ_StartDiagonalQ0;
  56. cSurface m_surf_HZ_StartDiagonalQ1;
  57. cSurface m_surf_HZ_StartDiagonalQ2;
  58. cSurface m_surf_HZ_StartDiagonalQ3;
  59. cSurface m_surf_HZ_EndDiagonalQ0;
  60. cSurface m_surf_HZ_EndDiagonalQ1;
  61. cSurface m_surf_HZ_EndDiagonalQ2;
  62. cSurface m_surf_HZ_EndDiagonalQ3;
  63. cSurface m_surf_VR_StartDiagonalQ0;
  64. cSurface m_surf_VR_StartDiagonalQ1;
  65. cSurface m_surf_VR_StartDiagonalQ2;
  66. cSurface m_surf_VR_StartDiagonalQ3;
  67. cSurface m_surf_VR_EndDiagonalQ0;
  68. cSurface m_surf_VR_EndDiagonalQ1;
  69. cSurface m_surf_VR_EndDiagonalQ2;
  70. cSurface m_surf_VR_EndDiagonalQ3;
  71. cSurface m_surfSRaceRoadQ0;
  72. cSurface m_surfSRaceRoadQ1;
  73. cSurface m_surfSRaceRoadQ2;
  74. cSurface m_surfSRaceRoadQ3;
  75. cSurface m_surfHalfRoadQ0;
  76. cSurface m_surfHalfRoadQ1;
  77. cSurface m_surfHalfRoadQ2;
  78. cSurface m_surfHalfRoadQ3;
  79. cSurface m_surfFullRoadQ0;
  80. cSurface m_surfFullRoadQ1;
  81. cSurface m_surfFullRoadQ2;
  82. cSurface m_surfFullRoadQ3;
  83. cSurface m_surfFullRoadQ4;
  84. cSurface m_surfFullRoadQ5;
  85. cSurface m_surfFullRoadQ6;
  86. cSurface m_surfFullRoadQ7;
  87. cSurface m_surfFullRoadQ8;
  88. cSurface m_surfFullRoadQ9;
  89. cSurface m_surfFullRoadQ10;
  90. cSurface m_surfFullRoadQ11;
  91. cSurface m_surfFullRoadQ12;
  92. cSurface m_surfFullRoadQ13;
  93. cSurface m_surfFullRoadQ14;
  94. cSurface m_surfFullRoadQ15;
  95. cSurface m_surfFullRoadQ16;
  96. cSurface m_surfFullRoadQ17;
  97. cSurface m_surfCurveQ0;
  98. cSurface m_surfCurveQ1;
  99. cSurface m_surfCurveQ2;
  100. cSurface m_surfCurveQ3;
  101. cSurface m_surfEndCurveQ0;
  102. cSurface m_surfEndCurveQ1;
  103. cSurface m_surfEndCurveQ2;
  104. cSurface m_surfEndCurveQ3;
  105. cSurface m_surfMediumCurveQ0P1;
  106. cSurface m_surfMediumCurveQ0P2;
  107. cSurface m_surfMediumCurveQ0P3;
  108. cSurface m_surfMediumCurveQ1P1;
  109. cSurface m_surfMediumCurveQ1P2;
  110. cSurface m_surfMediumCurveQ1P3;
  111. cSurface m_surfMediumCurveQ2P1;
  112. cSurface m_surfMediumCurveQ2P2;
  113. cSurface m_surfMediumCurveQ2P3;
  114. cSurface m_surfMediumCurveQ3P1;
  115. cSurface m_surfMediumCurveQ3P2;
  116. cSurface m_surfMediumCurveQ3P3;
  117. cSurface m_surfEndMediumCurveQ0P1;
  118. cSurface m_surfEndMediumCurveQ0P2;
  119. cSurface m_surfEndMediumCurveQ0P3;
  120. cSurface m_surfEndMediumCurveQ1P1;
  121. cSurface m_surfEndMediumCurveQ1P2;
  122. cSurface m_surfEndMediumCurveQ1P3;
  123. cSurface m_surfEndMediumCurveQ2P1;
  124. cSurface m_surfEndMediumCurveQ2P2;
  125. cSurface m_surfEndMediumCurveQ2P3;
  126. cSurface m_surfEndMediumCurveQ3P1;
  127. cSurface m_surfEndMediumCurveQ3P2;
  128. cSurface m_surfEndMediumCurveQ3P3;
  129. //这个函数用来删除在赛道的主碰撞检测区域的每个贴片多边形区域
  130. void RemoveHitRegion();
  131. public:
  132. //这个精灵控制信号灯的动画
  133. cSprite m_sptrWait;
  134. //这是赛车数组,它代表了当前赛道中比赛的所有赛车,对于每一次的比赛,我们都需要将所有赛车加入到这个数组中
  135. cRaceCar*   m_pRaceCars[4];
  136. // 这个矩阵拥有赛道中所有贴片信息
  137. cMatrix m_RoadMap;
  138. // 这个碰撞类拥有赛道中所有有效区域的信息。如果有车碰到了无效区域,则它要爆炸
  139. cHitChecker m_hcRoadMap;
  140. // 信号灯的声音缓冲
  141. cSound m_sndSemaphore;
  142. BYTE GetLocalCarID();
  143. void SetRemoteKeyboardStatus(BYTE bIdCar, BYTE bStatus);
  144. int GetAngle(int iCol, int iRow);
  145. void SetCarInfo(BYTE bID, BYTE bMask, 
  146. DWORD   dwElapseTime,
  147. BYTE bLaps,
  148. int     iSpeed,
  149. BYTE bCarPosition,
  150. DWORD dwLastLapTime,
  151. unsigned short nCarX,
  152. unsigned short nCarY,
  153. BYTE bAngle,
  154. BYTE bCarState);
  155. char* GetFileName();
  156. string m_sFileName;
  157. int GetHeight();
  158. int GetWidth();
  159. cRaceCar* GetCar(int iPos);
  160. int GetNumberOfCars();
  161. int GetNumberOfLaps();
  162. char* GetTrackName();
  163. void GetCheckPointPosition(int *iX, int* iY,int iCheckPoint);
  164. // int TurnDirection(int iX, int iY, int iAngle);
  165. int GetRoadType(int iX, int iY);
  166. void AddCar(cRaceCar* pCar);
  167. void Process();
  168. int m_iMaxCheckPoint;
  169. int GetMaxCheckPoint();
  170. int GetCheckPoint(int iX, int iY);
  171. BOOL CarHittedRoad(cRaceCar* pCar, int iX = -1, int iY = -1);
  172. int GetViewY();
  173. int GetViewX();
  174. void AdjustView(cRaceCar* pPar);
  175. void GetStartPosition(int* iX, int* iY);
  176. BOOL ReadFromFile(char* lpszFile);
  177. void SetRoad(int iCol, int iRow, int iType);
  178. void Draw(int iDestX = 0, int iDestY = 0, int nX =-1 , int nY =-1 , int nWidth = 640, int nHeight = 480);
  179. void Destroy(BOOL bLastDestroy = FALSE);
  180. //cSurface m_surfMap;
  181. void SetTile(UINT iTile);
  182. void Create(int nWidth, int nHeight);
  183. cRaceTrack();
  184. virtual ~cRaceTrack();
  185. };
  186. #endif // !defined(AFX_CRACETRACK_H__2022F72B_F3CD_47F7_904E_11F2297090EE__INCLUDED_)