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

游戏

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. /// File:    CBall.cpp
  3. /// Purpose: Implementation of CBall Class
  4. ///////////////////////////////////////////////////////////////////////////////
  5. /// Configuation Management
  6. /// 
  7. /// Who         When          Description
  8. /// ===========================================================================
  9. /// R. Walter   28-Dec-2003   Initial Version/Release
  10. ///
  11. ///////////////////////////////////////////////////////////////////////////////
  12. /// Copyright 2003: Robert Walter   All rights reserved
  13. ///////////////////////////////////////////////////////////////////////////////
  14. /// HEADER FILE INCLUDES //////////////////////////////////////////////////////
  15. #include "CBall.h"
  16. ///////////////////////////////////////////////////////////////////////////////
  17. /// Method:  CBall --> default constructor
  18. /// Purpose: Initialize member variables
  19. ///////////////////////////////////////////////////////////////////////////////
  20. /// Receives: nothing
  21. /// Returns:  nothing
  22. ///////////////////////////////////////////////////////////////////////////////
  23. CBall::CBall()
  24. {
  25. return;
  26. }
  27. ///////////////////////////////////////////////////////////////////////////////
  28. /// Method:  ~CBricks --> default destructor
  29. /// Purpose: Deallocate member variables
  30. ///////////////////////////////////////////////////////////////////////////////
  31. /// Receives: nothing
  32. /// Returns:  nothing
  33. ///////////////////////////////////////////////////////////////////////////////
  34. CBall::~CBall()
  35. {
  36. return;
  37. }
  38. ///////////////////////////////////////////////////////////////////////////////
  39. /// Method:  GetBallRect
  40. /// Purpose: Retrieve the rectangle of the current ball position
  41. ///////////////////////////////////////////////////////////////////////////////
  42. /// Receives: nothing
  43. /// Returns:  RECT structure of current ball location
  44. ///////////////////////////////////////////////////////////////////////////////
  45. RECT CBall::GetBallRect()
  46. {
  47. RECT l_ball_rect;
  48. l_ball_rect.top = m_y_pos;
  49. l_ball_rect.left = m_x_pos;
  50. l_ball_rect.right = m_x_pos + BALL_WIDTH;
  51. l_ball_rect.bottom = m_y_pos + BALL_HEIGHT;
  52. return(l_ball_rect);
  53. }
  54. ///////////////////////////////////////////////////////////////////////////////
  55. /// Method:  GetCaptiveRect
  56. /// Purpose: Retrieve the current captive rectangle of the ball
  57. ///////////////////////////////////////////////////////////////////////////////
  58. /// Receives: nothing
  59. /// Returns:  captive rectangle of the ball (member variable m_captive_rect)
  60. ///////////////////////////////////////////////////////////////////////////////
  61. RECT  CBall::GetCaptiveRect()
  62. {
  63. return(m_captive_rect);
  64. }
  65. ///////////////////////////////////////////////////////////////////////////////
  66. /// Method:  GetState
  67. /// Purpose: Retrieve the current state of the ball
  68. ///////////////////////////////////////////////////////////////////////////////
  69. /// Receives: nothing
  70. /// Returns:  current state of the ball (member variable m_state)
  71. ///////////////////////////////////////////////////////////////////////////////
  72. EBallState CBall::GetState()
  73. {
  74. return(m_state);
  75. }
  76. ///////////////////////////////////////////////////////////////////////////////
  77. /// Method:  GetVelMultiplier
  78. /// Purpose: Retrieve the current ball brick 'bounce' velocity
  79. ///////////////////////////////////////////////////////////////////////////////
  80. /// Receives: nothing
  81. /// Returns:  the current velocity multiplier (member variable m_vel_multi)
  82. ///////////////////////////////////////////////////////////////////////////////
  83. int CBall::GetVelMultiplier()
  84. {
  85. return m_vel_multi;
  86. }
  87. ///////////////////////////////////////////////////////////////////////////////
  88. /// Method:  GetXPos
  89. /// Purpose: Retrieve the current X position (in pixels) of the ball
  90. ///////////////////////////////////////////////////////////////////////////////
  91. /// Receives: nothing
  92. /// Returns:  integer of current X position (member variable m_x_pos)
  93. ///////////////////////////////////////////////////////////////////////////////
  94. int CBall::GetXPos()
  95. {
  96. return(m_x_pos);
  97. }
  98. ///////////////////////////////////////////////////////////////////////////////
  99. /// Method:  GetYPos
  100. /// Purpose: Retrieve the current Y position (in pixels) of the ball
  101. ///////////////////////////////////////////////////////////////////////////////
  102. /// Receives: nothing
  103. /// Returns:  integer of current Y position (member variable m_y_pos)
  104. ///////////////////////////////////////////////////////////////////////////////
  105. int CBall::GetYPos()
  106. {
  107. return(m_y_pos);
  108. }
  109. ///////////////////////////////////////////////////////////////////////////////
  110. /// Method:  GetXVel
  111. /// Purpose: Retrieve the current X velocity (in pixels) of the ball
  112. ///////////////////////////////////////////////////////////////////////////////
  113. /// Receives: nothing
  114. /// Returns:  integer of current X velocity (member variable m_x_vel)
  115. ///////////////////////////////////////////////////////////////////////////////
  116. int CBall::GetXVel()
  117. {
  118. return(m_x_vel);
  119. }
  120. ///////////////////////////////////////////////////////////////////////////////
  121. /// Method:  GetYVel
  122. /// Purpose: Retrieve the current Y velocity (in pixels) of the ball
  123. ///////////////////////////////////////////////////////////////////////////////
  124. /// Receives: nothing
  125. /// Returns:  integer of current Y velocity (member variable m_y_vel)
  126. ///////////////////////////////////////////////////////////////////////////////
  127. int CBall::GetYVel()
  128. {
  129. return(m_y_vel);
  130. }
  131. ///////////////////////////////////////////////////////////////////////////////
  132. /// Method:  ReflectX
  133. /// Purpose: 'Bounce' the ball in the X direction
  134. ///////////////////////////////////////////////////////////////////////////////
  135. /// Receives: nothing
  136. /// Returns:  nothing
  137. ///////////////////////////////////////////////////////////////////////////////
  138. void CBall::ReflectX()
  139. {
  140. m_x_vel = -1 * m_x_vel;
  141. m_y_pos += m_y_vel;
  142. m_x_pos += m_x_vel;
  143. }
  144. ///////////////////////////////////////////////////////////////////////////////
  145. /// Method:  ReflectY
  146. /// Purpose: 'Bounce' the ball in the Y direction
  147. ///////////////////////////////////////////////////////////////////////////////
  148. /// Receives: nothing
  149. /// Returns:  nothing
  150. ///////////////////////////////////////////////////////////////////////////////
  151. void CBall::ReflectY()
  152. {
  153. m_y_vel = -1 * m_y_vel;
  154. m_y_pos += m_y_vel;
  155. m_x_pos += m_x_vel;
  156. }
  157. ///////////////////////////////////////////////////////////////////////////////
  158. /// Method:  SetCaptiveRect
  159. /// Purpose: Define the rectangle that holds the ball (only when state == CAPTIVE)
  160. ///////////////////////////////////////////////////////////////////////////////
  161. /// Receives: new captive rectangle
  162. /// Returns:  nothing
  163. ///////////////////////////////////////////////////////////////////////////////
  164. void CBall::SetCaptiveRect(const RECT p_rect)
  165. {
  166. m_captive_rect = p_rect;
  167. }
  168. ///////////////////////////////////////////////////////////////////////////////
  169. /// Method:  SetState
  170. /// Purpose: Set the new state of the ball
  171. ///////////////////////////////////////////////////////////////////////////////
  172. /// Receives: new ball state
  173. /// Returns:  nothing
  174. ///////////////////////////////////////////////////////////////////////////////
  175. void CBall::SetState(const EBallState p_state)
  176. {
  177. m_state = p_state;
  178. }
  179. ///////////////////////////////////////////////////////////////////////////////
  180. /// Method:  SetVelMultiplier
  181. /// Purpose: Set the new ball brick 'bounce' velocity
  182. ///////////////////////////////////////////////////////////////////////////////
  183. /// Receives: new velocity multiplier
  184. /// Returns:  nothing
  185. ///////////////////////////////////////////////////////////////////////////////
  186. void CBall::SetVelMultiplier(const int p_vel_multi)
  187. {
  188. m_vel_multi = p_vel_multi;
  189. }
  190. ///////////////////////////////////////////////////////////////////////////////
  191. /// Method:  SetXPos
  192. /// Purpose: Set the X coordinate of the new ball position
  193. ///////////////////////////////////////////////////////////////////////////////
  194. /// Receives: new X coordinate
  195. /// Returns:  nothing
  196. ///////////////////////////////////////////////////////////////////////////////
  197. void CBall::SetXPos(const int p_x)
  198. {
  199. m_x_pos = p_x;
  200. }
  201. ///////////////////////////////////////////////////////////////////////////////
  202. /// Method:  SetXYPos
  203. /// Purpose: Set both the X and Y coordinates of the new ball position
  204. ///////////////////////////////////////////////////////////////////////////////
  205. /// Receives: new X coordinate
  206. ///           new Y coordinate
  207. /// Returns:  nothing
  208. ///////////////////////////////////////////////////////////////////////////////
  209. void CBall::SetXYPos(const int p_x, const int p_y)
  210. {
  211. m_x_pos = p_x;
  212. m_y_pos = p_y;
  213. }
  214. ///////////////////////////////////////////////////////////////////////////////
  215. /// Method:  SetYPos
  216. /// Purpose: Set the Y coordinate of the new ball position
  217. ///////////////////////////////////////////////////////////////////////////////
  218. /// Receives: new Y coordinate
  219. /// Returns:  nothing
  220. ///////////////////////////////////////////////////////////////////////////////
  221. void CBall::SetYPos(const int p_y)
  222. {
  223. m_y_pos = p_y;
  224. }
  225. ///////////////////////////////////////////////////////////////////////////////
  226. /// Method:  SetXVel
  227. /// Purpose: Set the X component of the new ball velocity
  228. ///////////////////////////////////////////////////////////////////////////////
  229. /// Receives: new X velocity
  230. /// Returns:  nothing
  231. ///////////////////////////////////////////////////////////////////////////////
  232. void CBall::SetXVel(const int p_x_vel)
  233. {
  234. m_x_vel = p_x_vel;
  235. }
  236. ///////////////////////////////////////////////////////////////////////////////
  237. /// Method:  SetYVel
  238. /// Purpose: Set the Y component of the new ball velocity
  239. ///////////////////////////////////////////////////////////////////////////////
  240. /// Receives: new Y velocity
  241. /// Returns:  nothing
  242. ///////////////////////////////////////////////////////////////////////////////
  243. void CBall::SetYVel(const int p_y_vel)
  244. {
  245. m_y_vel = p_y_vel;
  246. }
  247. /// END OF FILE ///////////////////////////////////////////////////////////////