| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #pragma once
- // #include <emmintrin.h>
- #include <sigc++/signal.h>
- #include <vector>
- #include <cstdlib>
- #include <ctime>
- #include <memory>
- struct Cell {
- bool isFlagged;
- bool isCleared;
- bool isBomb;
- int bombsNearby;
- Cell(): isFlagged(false), isCleared(false), isBomb(false), bombsNearby(-1) {};
- };
- class MineField {
- std::vector<std::shared_ptr<Cell>> m_cells;
- int m_rows;
- int m_cols;
- int m_totalMines;
- int m_remainingFlags;
- bool m_exploded;
- void computeBombsNearby(int x, int y);
- void openNeighboorhood(int x, int y);
- void setClearCell(int x, int y);
- public:
- MineField(int cols, int rows, int mines);
- void initBombs(int x, int y);
- bool isBomb(int x, int y);
- bool isFlagged(int x, int y);
- bool isCleared(int x, int y);
- bool clearCell(int x, int y);
- int bombsNearby(int x, int y);
- bool isGameOver() {return m_exploded; };
- int getCols() {return m_cols; };
- int getRows() {return m_rows; };
- bool toggleFlag(int x, int y);
- int getRemainingFlags() {return m_remainingFlags; };
- int getTotalMines() {return m_totalMines; };
- sigc::signal<void(int, int)> clearCellSignal;
- sigc::signal<void(int)> remainingFlagsChangedSignal;
- };
|