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

游戏

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. /// File:    CBricks.h
  3. /// Purpose: Declaration of CBricks Class
  4. ///          This class represents the bricks for the game.
  5. ///////////////////////////////////////////////////////////////////////////////
  6. /// Configuation Management
  7. /// 
  8. /// Who         When          Description
  9. /// ===========================================================================
  10. /// R. Walter   28-Dec-2003   Initial Version/Release
  11. ///
  12. ///////////////////////////////////////////////////////////////////////////////
  13. /// Copyright 2003: Robert Walter   All rights reserved
  14. ///////////////////////////////////////////////////////////////////////////////
  15. #ifndef CBRICKS_H_
  16. #define CBRICKS_H_
  17. /// HEADER DEFINES ////////////////////////////////////////////////////////////
  18. #define WIN32_LEAN_AND_MEAN
  19. /// HEADER FILE INCLUDES //////////////////////////////////////////////////////
  20. #include <windows.h>
  21. #include <windowsx.h>
  22. #include <fstream>
  23. using std::ofstream;
  24. /// CONSTANTS /////////////////////////////////////////////////////////////////
  25. const int DEFAULT_BRICK_START_X   = 28;
  26. const int DEFAULT_BRICK_START_Y   = 79;
  27. const int DEFAULT_BRICK_WIDTH     = 60;
  28. const int DEFAULT_BRICK_HEIGHT    = 25;
  29. const int DEFAULT_BRICK_HOR_SPACE = 2;
  30. const int DEFAULT_BRICK_VER_SPACE = 2;
  31. const int DEFAULT_BRICK_ROWS      = 8;
  32. const int DEFAULT_BRICK_COLS      = 12;
  33. enum EBrickState {BS_NORMAL, BS_HIT, BS_SKIP};
  34. /// TYPE / CLASS DECLARATIONS /////////////////////////////////////////////////
  35. struct TBrick
  36. {
  37.     DWORD       color;
  38.     RECT        rect;
  39.     EBrickState state;
  40. int         point_value;
  41. int         reflect_vel;
  42. int         row;
  43. int         col;
  44. };
  45. class CBricks
  46. {
  47. private:
  48.     int m_start_x;          /** x coordinate of top-left corner of first brick **/
  49.     int m_start_y;          /** y coordinate of top-left corner of first brick **/
  50.     int m_brick_width;      /** width (in pixels) of each brick **/
  51.     int m_brick_height;     /** height (in pixels) of each brick **/
  52.     int m_brick_hor_space;  /** horizontal space (in pixels) between brick rows **/
  53.     int m_brick_ver_space;  /** vertical space (in pixels) between brick cols **/
  54. int m_brick_bottom;     /** y coordinate of last row of bricks **/
  55.     int m_num_rows;         /** number of brick rows **/
  56.     int m_num_cols;         /** number of brick columns per row **/
  57. DWORD* m_row_colors;    /** dynamic array of colors for rows **/
  58. int*   m_row_points;    /** dynamic array of points for rows **/
  59. int*   m_row_vel;       /** dynamic array of reflection velocity for rows **/
  60.     TBrick* m_bricks;       /** dynamically allocated array of bricks **/
  61. int m_brick_cnt;
  62.     int m_bricks_remaining; /** number of bricks left to be hit **/
  63. public:
  64.     // constructor
  65.     CBricks();
  66.     // destructor
  67.     ~CBricks();    
  68.     // member functions
  69. TBrick GetBrick(const int p_brick_no);
  70. int  GetBrickCount();
  71. int  GetBricksRemaining();
  72. void SetBrickProperties(const int p_width, const int p_height, const int p_h_space, const int p_v_space);
  73. void SetBrickState(const int p_row, const int p_col, const EBrickState p_state);
  74. void SetRowColProperties(const int p_rows, const int p_cols, DWORD* p_row_colors, int* p_row_points, int* p_row_vel);
  75.     void SetTopLeftPosition(const int p_x, const int p_y);
  76. bool IsBrickAtPosition(const int p_x, const int p_y, TBrick* p_brick);
  77. void InitializeBricks();
  78. };
  79. #endif