/////////////////////////////////////////////////////////////////////////////// // Name: game.h // Purpose: Bombs game // Author: P. Foggia 1996 // Modified by: Wlodzimierz Skiba (ABX) since 2003 // Created: 1996 // Copyright: (c) 1996 P. Foggia // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_DEMOS_BOMBS_GAME_H_ #define _WX_DEMOS_BOMBS_GAME_H_ #define BG_HIDDEN 0x100 #define BG_BOMB 0x200 #define BG_MARKED 0x400 #define BG_EXPLODED 0x800 #define BG_SELECTED 0x080 #define BG_MASK 0x03F #include class BombsGame { public: BombsGame() { m_width = m_height = 0; m_field = NULL; } ~BombsGame(); int GetWidth() const { return m_width; } int GetHeight() const { return m_height; } int Get(int x, int y) const { return m_field[x+y*m_width]; } int IsFocussed(int x, int y) const { return (m_gridFocusX == x) && (m_gridFocusY == y); } int IsHidden(int x, int y) const { return Get(x,y) & BG_HIDDEN; } int IsMarked(int x, int y) const { return Get(x,y) & BG_MARKED; } int IsBomb(int x, int y) const { return Get(x,y) & BG_BOMB; } int IsExploded(int x, int y) const { return Get(x,y) & BG_EXPLODED; } int IsSelected(int x, int y) const { return Get(x,y) & BG_SELECTED; } int GetNumBombs() const { return m_numBombCells; } int GetNumRemainingCells() const { return m_numRemainingCells; } int GetNumMarkedCells() const { return m_numMarkedCells; } bool Init(int width, int height, bool easyCorner = false); // Marks/unmarks a cell void Mark(int x, int y); // Unhides a cell void Unhide(int x, int y, bool b_selected); // Makes a cell exploded void Explode(int x, int y); int m_gridFocusX; int m_gridFocusY; private: // Current difficulty level (Determines grid size). //int m_level; int m_width, m_height; short *m_field; int m_numBombCells, m_numRemainingCells, m_numMarkedCells; }; #endif // #ifndef _WX_DEMOS_BOMBS_GAME_H_