GameConsts.h
上传用户:royluo
上传日期:2007-01-05
资源大小:1584k
文件大小:14k
源码类别:

游戏

开发平台:

Visual C++

  1. /*****************************************************************************
  2. *                                                                             
  3. *   GameConsts.h
  4. *                                                                             
  5. *   Electrical Engineering Faculty - Software Lab                             
  6. *   Spring semester 1998                                                      
  7. *                                                                             
  8. *   Tanks game                                                                
  9. *                                                                             
  10. *   Module description: The collection of the game constant parameters in use.
  11. *                       
  12. *                                                                             
  13. *   Authors: Eran Yariv - 28484475                                           
  14. *            Moshe Zur  - 24070856                                           
  15. *                                                                            
  16. *                                                                            
  17. *   Date: 23/09/98                                                           
  18. *                                                                            
  19. ******************************************************************************/
  20. #pragma warning (disable : 4239) 
  21.     // warning C4239: nonstandard extension used : conversion from 'class XXX' to 'class XXX &'
  22. #pragma warning (disable : 4201) 
  23.     // warning C4201: nonstandard extension used : nameless struct/union
  24. #ifndef GAME_CONSTS_H
  25. #define GAME_CONSTS_H
  26.     
  27. #define MAX_TANKS                    4                  // Max number of tanks in one game
  28. #define MAX_POSSIBLE_OBJECTS       100                  // Max number of objects that appear concurrently
  29.     // Renderer:
  30. #define MIN_RENDER_FREQ              1                  // Minimal rendering rate (frames per second)
  31. #define MAX_RENDER_FREQ             40                  // Maximal rendering rate (frames per second)
  32. #define DEFAULT_RENDER_FREQ         20                  // Default rendering rate (frames per second)
  33.     // Map:
  34. #define MAP_WIDTH                  500                  // Width (in pixels) of game map
  35. #define MAP_HEIGHT                 500                  // Height (in pixels) of game map
  36. #define MAP_WIDTH_BITS               9                  // Number of bits to hold map width
  37. #define MAP_HEIGHT_BITS              9                  // Number of bits to hold map height
  38. #define SECTOR_DIVISION              4                  // Each axis is divided SECTOR_DIVISION times
  39.                                                         // Maximal sector number (e.g: 0..15 = 4 x 4 division)        
  40. #define MAX_SECTOR       ((SECTOR_DIVISION) * (SECTOR_DIVISION) - 1)          
  41. #define MAP_WIDTH_BITS               9                  // Number of bits to hold map width
  42. #define MAP_HEIGHT_BITS              9                  // Number of bits to hold map height
  43. #define MAX_MINES_PER_SECTOR        (MAP_WIDTH  / SECTOR_DIVISION / MINE_WIDTH )   *  
  44.                                     (MAP_HEIGHT / SECTOR_DIVISION / MINE_HEIGHT)   *  2
  45.     // Orientation
  46. #define MAX_DIRECTIONS              24                  // Possible rotations (15 degrees)
  47. #define INVALID_DIRECTION           (MAX_DIRECTIONS + 1)
  48.                                                         // Indicates invalid direction index
  49.     // Tank selection animation:
  50. #define TANK_ANIM_WIDTH            110                  // Width (in pixels) of tank animation AVI
  51. #define TANK_ANIM_HEIGHT            70                  // Height (in pixels) of tank animation AVI
  52.     // Status bars:
  53. #define SHIELD_STATUS_WIDTH         20                  // Width of shield status bar
  54. #define AMMO_STATUS_WIDTH           50                  // Width of ammunition status bar
  55. #define AMMO_STATUS_HEIGHT         220                  // Height of ammunition status bar
  56. #define DIGIT_WIDTH                  9                  // Width of single digit (ammo. status bar)
  57. #define DIGIT_HEIGHT                13                  // Height of single digit (ammo. status bar)
  58. #define MAX_STATUS_VALUE           500                  // Max value of status counters
  59.     // Transparency:
  60. #define TRANSP_COLOR                10
  61.     // Mine object:
  62. #define MINE_WIDTH                  10                  // Width of mine object
  63. #define MINE_HEIGHT                 10                  // Height of mine object
  64. #define MINE_INTENSITY              40                  // Constant explosion intensity of a mine
  65. #define MINE_EXPIRATION   DWORD(120000)                 // Mine time-out (2 minutes)
  66.     // Bullet object:
  67. #define BULLET_WIDTH                 3                  // Width of bullet object
  68. #define BULLET_HEIGHT                3                  // Height of bullet object
  69. #define BULLET_SPEED                80                  // Pixels / second
  70. #define BULLET_INTENSITY             7                  // Constant explosion intensity of a bullet
  71. #define BULLET_DISTANCE_SQR      10000                  // Max distance of a bullet (squared)
  72.     // Shell object:
  73. #define SHELL_WIDTH                  8                  // Width of shell object
  74. #define SHELL_HEIGHT                 8                  // Height of shell object
  75. #define SHELL_SPEED                100                  // Pixels / second
  76. #define SHELL_INTENSITY             40                  // Maximal explosion intensity of a shell
  77. #define MIN_SHELL_RADIUS            20                  // Minimal explosion radius 
  78.                                                         // (below this distance you get a full blast power)
  79. #define MAX_SHELL_RADIUS            40                  // Maximal explosion radius 
  80.                                                         // (above this distance you don't feel a thing)
  81.     // Bomber object
  82. #define BOMBER_WIDTH                50                  // Width of bomber image
  83. #define BOMBER_HEIGHT               50                  // Height of bomber image
  84. #define BOMBER_SPEED                40                  // Speed of bomber (pixels / sec)
  85. #define BOMBS_TIME_GAP            2000                  // Time gap between bombs (msecs)
  86. #define BOMBER_ROTATION_DELAY       25                  // Millisecs between rotation / movement in setup mode
  87. #define EDGE_TICKS                  50                  // Number of setup positions on a single map edge
  88.  
  89.     // Bomb object:
  90. #define BOMB_WIDTH                  50                  // Width of bomb object
  91. #define BOMB_HEIGHT                 50                  // Height of bomb object
  92. #define BOMB_INTENSITY              50                  // Maximal explosion intensity of a bomb
  93. #define BOMB_SPEED                  15                  // Bomb speed equals the bomber's speed
  94. #define MIN_BOMB_RADIUS             20                  // Minimal explosion radius
  95. #define MAX_BOMB_RADIUS            100                  // Maximal explosion radius
  96.     // Tank object:
  97. #define TANK_BLOCK_WIDTH             4                  // Width of tank in map blocks
  98. #define TANK_BLOCK_HEIGHT            4                  // Height of tank in map blocks
  99. #define TANK_WIDTH                  40                  // Width of tank in pixels
  100. #define TANK_HEIGHT                 40                  // Height of tank in pixels
  101. #define TANK_INIT_SHELLS            40                  // Number of shells a tank begins with
  102. #define TANK_INIT_BULLETS          250                  // Number of bullets a tank begins with
  103. #define TANK_INIT_MINES              5                  // Number of mines a tank begins with
  104. #define TANK_INIT_SHIELD_LEVEL     100                  // Quantity of initial shield level
  105. #define TANK_BONUS_SHELLS           10                  // Number of shells granted by a bonus object
  106. #define TANK_BONUS_BULLETS          50                  // Number of bullets granted by a bonus object
  107. #define TANK_BONUS_MINES             2                  // Number of mines granted by a bonus object
  108. #define TANK_BONUS_SHIELD           30                  // Quantity of shield granted by a bonus object
  109. #define BULLET_FIRE_RATE             3                  // Number of bullets per sec.
  110. #define SHELL_FIRE_RATE              1                  // Number of shells per sec.
  111. #define MINE_FIRE_DELAY            600                  // We allow less than 2 mines per sec.
  112. #define TANK_ROTATION_DELAY        108                  // Millisecs between 15 degrees rotations
  113. #define FIRE_RATE_BONUS              2                  // Factor of fire rate when bonus is effective
  114. #define FIRE_RATE_BONUS_DURATION 25000                  // Duration of fire rate bonus in msec
  115. #define TANK_MAX_VELOCITY   double( 40.0 )              // Tank's velocity in pixel per sec. 
  116. #define TANK_75_VELOCITY    double(TANK_MAX_VELOCITY * 0.75)
  117. #define TANK_50_VELOCITY    double(TANK_MAX_VELOCITY * 0.50)
  118. #define TANK_25_VELOCITY    double(TANK_MAX_VELOCITY * 0.25)
  119. #define MAX_POS_TABLE               30                  // Table of last 30 tanks positions
  120. #define MAX_BAD_RTT_COUNT            5                  // After X continous bad RTTs, 
  121.                                                         // a tank becomes zombie, and vice versa
  122. #define MAX_VALID_RTT             1500                  // Maximal Round Trip Time considered valid
  123.     // Bonus object:
  124. #define BONUS_WIDTH                 16                  // Width of bonus object
  125. #define BONUS_HEIGHT                16                  // Height of bonus object
  126. #define BONUS_MIN_LIFESPAN        6000                  // Minimal life span of a bonus
  127. #define BONUS_LIFESPAN_RANGE      3000                  // Life span range for rand func.
  128.     // Game-over animation
  129. #define GAMEOVER_ANIM_WIDTH        400
  130. #define GAMEOVER_ANIM_HEIGHT        64
  131.     // Communication object:
  132. #define COMM_TIME_OUT           600000                  // Time out for wait event
  133. #define CHKSUM_TIME_GAP_BITS        10                  // Time gap (msecs) between checksum is 2 to the power ot this.
  134. #define MAX_COMM_MUTE_PERIOD      5000                  // Max period of time the host didn't hear from a tank
  135.                                                         // before it becomes zombie
  136. #define MAX_PLAYER_NAME             10                  // Max length of a player name
  137. #define MAX_CHAT_MSG_LEN            30                  // Max length of a chat msg
  138. /************  Monitoring definitions and macros ****************/
  139. /*  Define NET_MON_GAME to allow network monitoring of game messages: 
  140.     All incoming and outgiong game messages will
  141.     be TRACEd (excluding chksums).
  142. */
  143. //#define NET_MON_GAME    
  144. /*  Define NET_MON_SYNC to allow network monitoring of game synchronization messages: 
  145.     All incoming and outgiong game synchronization messages will
  146.     be TRACEd (chksums and checksum checking results).
  147. */
  148. //#define NET_MON_SYNC    
  149. /*  Define NET_MON_SYS to allow network monitoring of DPlay system messages: 
  150.     All incoming and outgiong DPlay system messages will
  151.     be TRACEd.
  152. */
  153. #define NET_MON_SYS  
  154. /* Trace game message */
  155. #ifdef NET_MON_GAME
  156.     #define NET_GAME_TRACE(x) {TRACE ("tGame message:"); TRACE x; TRACE ("n");}
  157. #else
  158.     #define NET_GAME_TRACE(x)
  159. #endif
  160. /* Trace game synch message */
  161. #ifdef NET_MON_SYNC
  162.     #define NET_SYNC_TRACE(x) {TRACE ("tGame synch message:"); TRACE x; TRACE ("n");}
  163. #else
  164.     #define NET_SYNC_TRACE(x)
  165. #endif
  166. /* Trace DirectPlay system message */
  167. #ifdef NET_MON_SYS                                              
  168.     #define NET_SYS_TRACE(x) {TRACE ("tDPlay system message:"); TRACE x; TRACE ("n");}
  169. #else
  170.     #define NET_SYS_TRACE(x)
  171. #endif
  172. /************  Statistics definitions ****************/
  173. /*  Define GATHER_RENDERING_STATS to allow the system to collect
  174.     statistics about the rendering performance (frame per second,
  175.     free time in each frame, etc.).
  176. */
  177. #define GATHER_RENDERING_STATS
  178. /*  Define GATHER_NETWORK_STATS to allow the system to collect
  179.     statistics about the network performance (bytes send / received per second,
  180.     round trip times and propogation delay).
  181. */
  182. #define GATHER_NETWORK_STATS
  183. /*  Define GATHER_SYNC_STATS to allow the system to collect
  184.     statistics about the synchronization system performance 
  185.     (checksum mismatch rate etc.)
  186. */
  187. #define GATHER_SYNC_STATS
  188. /************  General definitions ****************/
  189. /*  Define REAL_RANDOM to make the random elements of the game completely random.
  190.     If you disable real randomness, each activation of the program will yield the same
  191.     random numbers (good for debugging)
  192. */
  193. #define REAL_RANDOM   
  194. /*  Use the following two definitions to manage the priorities of the 
  195.     game manager threrad (renderer) and the communication manager thread.
  196.     The main application thread (the GUI thread) remains in THREAD_PRIORITY_NORMAL
  197. */
  198. #define GAME_MANAGER_THREAD_PRIORITY        THREAD_PRIORITY_HIGHEST 
  199. #define COMM_MANAGER_THREAD_PRIORITY        THREAD_PRIORITY_HIGHEST
  200. // Default keyboard assignments
  201. const int DEFAULT_KEYS_SETTINGS[] = {
  202.         VK_RIGHT,           // Turn Right
  203.         VK_LEFT,            // Turn Left
  204.         VK_UP,              // Forward
  205.         VK_DOWN,            // BackWard
  206.         VK_CONTROL,         // Fire Shell
  207.         VK_RETURN,          // Fire Bullet
  208.         'M',                // Drop Mine
  209.         'A' };              // Aerial Support
  210. #define MAX_DWORD       0xFFFFFFFF
  211. #if !defined ( UNREFERENCED_PARAMETER )
  212.     #ifdef _DEBUG
  213.         #define UNREFERENCED_PARAMETER(P)
  214.     #else
  215.         #define UNREFERENCED_PARAMETER(P)   P
  216.     #endif
  217. #endif // !defined ( UNREFERENCED_PARAMETER )
  218. #endif  // GAME_CONSTS_H