2003-12-18 20:34:40 -05:00
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: game.h
|
|
|
|
// Purpose: Bombs game
|
|
|
|
// Author: P. Foggia 1996
|
2005-05-10 15:22:06 -04:00
|
|
|
// Modified by: Wlodzimierz Skiba (ABX) since 2003
|
2003-12-18 20:34:40 -05:00
|
|
|
// Created: 1996
|
|
|
|
// Copyright: (c) 1996 P. Foggia
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _WX_DEMOS_BOMBS_GAME_H_
|
|
|
|
#define _WX_DEMOS_BOMBS_GAME_H_
|
1998-12-31 05:54:41 -05:00
|
|
|
|
|
|
|
#define BG_HIDDEN 0x100
|
|
|
|
#define BG_BOMB 0x200
|
|
|
|
#define BG_MARKED 0x400
|
|
|
|
#define BG_EXPLODED 0x800
|
2005-05-16 11:32:04 -04:00
|
|
|
#define BG_SELECTED 0x080
|
|
|
|
#define BG_MASK 0x03F
|
1998-12-31 05:54:41 -05:00
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
class BombsGame
|
2003-12-18 20:34:40 -05:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
BombsGame()
|
|
|
|
{
|
|
|
|
m_width = m_height = 0;
|
|
|
|
m_field = NULL;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
~BombsGame();
|
|
|
|
|
2018-11-25 14:22:55 -05:00
|
|
|
int GetWidth() const { return m_width; }
|
|
|
|
int GetHeight() const { return m_height; }
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
int Get(int x, int y) const
|
|
|
|
{
|
|
|
|
return m_field[x+y*m_width];
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
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;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
int IsMarked(int x, int y) const
|
|
|
|
{
|
|
|
|
return Get(x,y) & BG_MARKED;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
int IsBomb(int x, int y) const
|
|
|
|
{
|
|
|
|
return Get(x,y) & BG_BOMB;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
int IsExploded(int x, int y) const
|
|
|
|
{
|
|
|
|
return Get(x,y) & BG_EXPLODED;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
2005-05-16 11:32:04 -04:00
|
|
|
int IsSelected(int x, int y) const
|
|
|
|
{
|
|
|
|
return Get(x,y) & BG_SELECTED;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2005-05-16 11:32:04 -04:00
|
|
|
|
2003-12-18 20:34:40 -05:00
|
|
|
int GetNumBombs() const
|
|
|
|
{
|
|
|
|
return m_numBombCells;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
int GetNumRemainingCells() const
|
|
|
|
{
|
|
|
|
return m_numRemainingCells;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
2005-05-16 11:32:04 -04:00
|
|
|
int GetNumMarkedCells() const
|
|
|
|
{
|
|
|
|
return m_numMarkedCells;
|
2018-11-25 14:22:55 -05:00
|
|
|
}
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
|
2005-05-06 14:07:14 -04:00
|
|
|
bool Init(int width, int height, bool easyCorner = false);
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
|
|
|
|
// Marks/unmarks a cell
|
|
|
|
void Mark(int x, int y);
|
|
|
|
|
|
|
|
// Unhides a cell
|
2005-05-16 11:32:04 -04:00
|
|
|
void Unhide(int x, int y, bool b_selected);
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
// 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;
|
2005-05-16 11:32:04 -04:00
|
|
|
int m_numBombCells, m_numRemainingCells, m_numMarkedCells;
|
2003-12-18 20:34:40 -05:00
|
|
|
|
|
|
|
};
|
1998-12-31 05:54:41 -05:00
|
|
|
|
2003-12-18 20:34:40 -05:00
|
|
|
#endif // #ifndef _WX_DEMOS_BOMBS_GAME_H_
|