]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/bombs/game.h
documented wx_truncate_cast()
[wxWidgets.git] / demos / bombs / game.h
index ad16000de6a0e372da5a5776f567743ee75ab1c7..fc500ecd94bc21b62d9f960091d2e8bb292167bd 100644 (file)
-//---------------------------------------------------------------
-// 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_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 <stddef.h>
 
 class BombsGame
 
 #include <stddef.h>
 
 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_