115 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // 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 <stddef.h>
 | |
| 
 | |
| 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_
 |