refactoring

This commit is contained in:
Bernardo Magri
2025-03-07 07:23:59 +00:00
parent 2c13567747
commit 052690fede
6 changed files with 454 additions and 92 deletions

View File

@@ -2,6 +2,7 @@
// #include <emmintrin.h>
#include <sigc++/signal.h>
#include <utility>
#include <vector>
#include <cstdlib>
#include <ctime>
@@ -18,22 +19,25 @@ struct Cell {
class MineField {
std::vector<std::shared_ptr<Cell>> m_cells;
int m_rows;
int m_cols;
int m_totalMines;
int m_remainingFlags;
int m_rows;
int m_cols;
int m_totalMines;
int m_remainingFlags;
int m_openCells;
bool m_exploded;
void computeBombsNearby(int x, int y);
void openNeighboorhood(int x, int y);
void setClearCell(int x, int y);
void setOpenCell(int x, int y);
//bint vecToPosition(int x, int y) {return (x + y * m_rows); };
//std::pair<int, int> positionToVec(int pos) {return std::make_pair(pos % m_cols, pos / m_cols); };
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);
bool isOpened(int x, int y);
bool openCell(int x, int y);
int bombsNearby(int x, int y);
bool isGameOver() {return m_exploded; };
int getCols() {return m_cols; };
@@ -41,6 +45,10 @@ public:
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;
void startNewGame(int cols, int rows, int mines);
sigc::signal<void(int, int)> openCellSignal;
sigc::signal<void(int)> remainingFlagsSignal;
sigc::signal<void(void)> gameWonSignal;
sigc::signal<void(void)> gameOverSignal;
};