1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        game.h
3 // Purpose:     Bombs game
4 // Author:      P. Foggia 1996
5 // Modified by: Wlodzimierz Skiba (ABX) since 2003
6 // Created:     1996
7 // RCS-ID:      $Id: game.h 34081 2005-05-16 15:32:04Z ABX $
8 // Copyright:   (c) 1996 P. Foggia
9 // Licence:     wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_DEMOS_BOMBS_GAME_H_
13 #define _WX_DEMOS_BOMBS_GAME_H_
14 
15 #define BG_HIDDEN   0x100
16 #define BG_BOMB     0x200
17 #define BG_MARKED   0x400
18 #define BG_EXPLODED 0x800
19 #define BG_SELECTED 0x080
20 #define BG_MASK     0x03F
21 
22 #include <stddef.h>
23 
24 class BombsGame
25 {
26 public:
BombsGame()27     BombsGame()
28     {
29         m_width = m_height = 0;
30         m_field = NULL;
31     };
32 
33     ~BombsGame();
34 
GetWidth()35     int GetWidth() const { return m_width; };
GetHeight()36     int GetHeight() const { return m_height; };
37 
Get(int x,int y)38     int Get(int x, int y) const
39     {
40         return m_field[x+y*m_width];
41     };
42 
IsFocussed(int x,int y)43     int IsFocussed(int x, int y) const
44     {
45         return (m_gridFocusX == x) && (m_gridFocusY == y);
46     }
47 
IsHidden(int x,int y)48     int IsHidden(int x, int y) const
49     {
50         return Get(x,y) & BG_HIDDEN;
51     };
52 
IsMarked(int x,int y)53     int IsMarked(int x, int y) const
54     {
55         return Get(x,y) & BG_MARKED;
56     };
57 
IsBomb(int x,int y)58     int IsBomb(int x, int y) const
59     {
60         return Get(x,y) & BG_BOMB;
61     };
62 
IsExploded(int x,int y)63     int IsExploded(int x, int y) const
64     {
65         return Get(x,y) & BG_EXPLODED;
66     };
67 
IsSelected(int x,int y)68     int IsSelected(int x, int y) const
69     {
70         return Get(x,y) & BG_SELECTED;
71     };
72 
GetNumBombs()73     int GetNumBombs() const
74     {
75         return m_numBombCells;
76     };
77 
GetNumRemainingCells()78     int GetNumRemainingCells() const
79     {
80         return m_numRemainingCells;
81     };
82 
GetNumMarkedCells()83     int GetNumMarkedCells() const
84     {
85         return m_numMarkedCells;
86     };
87 
88 
89     bool Init(int width, int height, bool easyCorner = false);
90 
91 
92     // Marks/unmarks a cell
93     void Mark(int x, int y);
94 
95     // Unhides a cell
96     void Unhide(int x, int y, bool b_selected);
97 
98     // Makes a cell exploded
99     void Explode(int x, int y);
100 
101     int m_gridFocusX;
102     int m_gridFocusY;
103 
104 private:
105 
106     // Current difficulty level (Determines grid size).
107     //int m_level;
108 
109     int m_width, m_height;
110     short *m_field;
111     int m_numBombCells, m_numRemainingCells, m_numMarkedCells;
112 
113 };
114 
115 #endif // #ifndef _WX_DEMOS_BOMBS_GAME_H_
116