X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70d26c3f4ffb24d50457d405c9595fd23f9e5b7c..e6b2a3b38383360d630547bd5d2b91447d7e6dfe:/demos/bombs/game.h?ds=sidebyside diff --git a/demos/bombs/game.h b/demos/bombs/game.h index ad16000de6..fc500ecd94 100644 --- a/demos/bombs/game.h +++ b/demos/bombs/game.h @@ -1,42 +1,115 @@ -//--------------------------------------------------------------- -// game.h -// Definition of the class BombsGame, containing the data for a -// playfield -//--------------------------------------------------------------- -#ifndef GAME_H -#define GAME_H +/////////////////////////////////////////////////////////////////////////////// +// Name: game.h +// Purpose: Bombs game +// Author: P. Foggia 1996 +// Modified by: Wlodzimierz Skiba (ABX) since 2003 +// Created: 1996 +// RCS-ID: $Id$ +// 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_MASK 0x0FF - +#define BG_SELECTED 0x080 +#define BG_MASK 0x03F #include class BombsGame - { protected: - int width,height; - short *field; - int bombs,normal_cells; - public: - BombsGame() { width=height=0; field=NULL; }; - ~BombsGame(); - int Init(int width, int height); - int GetWidth() { return width; }; - int GetHeight() { return height; }; - int Get(int x, int y) { return field[x+y*width]; }; - void Mark(int x, int y); - void Unhide(int x, int y); - void Explode(int x, int y); - int IsHidden(int x, int y) { return Get(x,y) & BG_HIDDEN; }; - int IsMarked(int x, int y) { return Get(x,y) & BG_MARKED; }; - int IsBomb(int x, int y) { return Get(x,y) & BG_BOMB; }; - int IsExploded(int x, int y) { return Get(x,y) & BG_EXPLODED; }; - int GetBombs() { return bombs; }; - int GetRemainingCells() { return normal_cells; }; - }; - -#endif /* def GAME_H */ +{ +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_