cleaning up

This commit is contained in:
Bernardo Magri
2025-04-10 17:15:14 +01:00
parent 2a1d45f998
commit b5f75a29b7
6 changed files with 252 additions and 281 deletions

View File

@@ -1,43 +1,35 @@
#pragma once
#include <atomic>
#include <sigc++/signal.h>
#include <utility>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <cstdlib>
#include <memory>
#include <thread>
#include <chrono>
#include <sigc++/signal.h>
#include <vector>
struct Cell {
bool isFlagged;
bool isCleared;
bool isBomb;
int bombsNearby;
Cell(): isFlagged(false), isCleared(false), isBomb(false), bombsNearby(-1) {};
};
class MineField
{
struct Cell
{
bool isFlagged = false;
bool isCleared = false;
bool isBomb = false;
int bombsNearby = -1;
};
class MineField {
std::vector<std::shared_ptr<Cell>> m_cells;
int m_rows;
int m_cols;
int m_totalMines;
int m_remainingFlags;
int m_openCells;
bool m_exploded;
bool m_gameWon;
size_t m_time;
std::atomic_bool m_timerRunning;
std::thread m_timerThread;
int m_rows;
int m_cols;
int m_totalMines;
int m_remainingFlags;
int m_openCells;
bool m_gameOver;
bool m_gameWon;
void computeBombsNearby(int x, int y);
void openNeighboorhood(int x, int y);
void setOpenCell(int x, int y);
void checkGameWon();
void timerTick();
void startTimer();
void stopTimer();
public:
MineField(int cols, int rows, int mines);
~MineField();
@@ -47,18 +39,16 @@ public:
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; };
int getRows() {return m_rows; };
bool isGameOver() { return m_gameOver; };
int getCols() { return m_cols; };
int getRows() { return m_rows; };
bool toggleFlag(int x, int y);
int getRemainingFlags() {return m_remainingFlags; };
size_t getCurrentTime() {return m_time; };
int getTotalMines() {return m_totalMines; };
int getRemainingFlags() { return m_remainingFlags; };
int getTotalMines() { return m_totalMines; };
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;
sigc::signal<void(size_t)> timerSignal;
sigc::signal<void(int, int)> openCellSignal;
sigc::signal<void(int)> remainingFlagsSignal;
sigc::signal<void(void)> gameWonSignal;
sigc::signal<void(void)> gameOverSignal;
};