-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMineField.h
More file actions
62 lines (44 loc) · 1.23 KB
/
MineField.h
File metadata and controls
62 lines (44 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#pragma once
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <random>
#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
class MineField
{
public:
enum TileType
{
EMPTY, MINE, FLAG, HIDDEN, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, EXPLOSION
};
MineField(unsigned int width, unsigned int height, int mines, sf::Vector2u tileSize);
~MineField();
// çàãðóçêà ïîëÿ èç ìàññèâà
void load(sf::Vector2u tileSize, const int* tiles);
// ãåíåðàöèÿ ñëó÷àéíîãî ïîëÿ
void generate(sf::Vector2i click_position);
bool checkMine(sf::Vector2i mousePosition);
bool checkFlag(sf::Vector2i mousePosition);
bool isSquareClosed(sf::Vector2i mousePosition);
void hideField();
void unhideField();
void restart();
void prepare();
int checkSurround(int index);
unsigned int width;
unsigned int height;
int mines;
void openSquare(sf::Vector2i mousePosition);
int getTile(sf::Vector2i mousePosition);
int getVisibleTile(sf::Vector2i mousePosition);
void setTile(sf::Vector2i mousePosition, TileType type);
void setVisibleTile(sf::Vector2i mousePosition, TileType type);
void debugOutput();
int* visibleField;
private:
void loadTiles(const int* from);
int* tileField;
sf::Vector2u tileSize;
};