Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using std::vector;
- class Minesweeper {
- private:
- size_t M, N;
- vector<vector<int>> Table;
- void CheckForMinesAround(size_t i, size_t j) {
- int counter = 0;
- for (int dx = -1; dx <= 1; ++dx) {
- for (int dy = -1; dy <= 1; ++dy) {
- if ((-dx <= static_cast<int>(i)) && (i + dx < M) &&
- (-dy <= static_cast<int>(j)) && (j + dy < N) &&
- Table[i + dx][j + dy] == -1) {
- ++counter;
- }
- }
- }
- Table[i][j] = counter;
- }
- public:
- Minesweeper(size_t m, size_t n): M(m), N(n) {
- Table = vector<vector<int>> (M, vector<int> (N, 0));
- }
- const size_t Rows() const {
- return M;
- }
- const size_t Columns() const {
- return N;
- }
- void SetMine(size_t i, size_t j) {
- Table[i][j] = -1;
- }
- int operator () (size_t i, size_t j) const {
- return Table[i][j];
- }
- void CheckForMinesAround() {
- for (size_t i = 0; i != M; ++i)
- for (size_t j = 0; j != N; ++j)
- if (Table[i][j] != -1)
- CheckForMinesAround(i, j);
- }
- };
- std::ostream& operator << (std::ostream& out, const Minesweeper& ms) {
- for (size_t i = 0; i != ms.Rows(); ++i) {
- for (size_t j = 0; j != ms.Columns(); ++j) {
- if (ms(i, j) == -1)
- out << '*';
- else
- out << ms(i, j);
- }
- out << "\n";
- }
- return out;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement