wxWidgets/demos/bombs/game.h
2018-11-25 21:29:37 +01:00

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_