-
Notifications
You must be signed in to change notification settings - Fork 0
/
MinesweeperWindow.h
42 lines (34 loc) · 1.32 KB
/
MinesweeperWindow.h
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
#pragma once
#include "Window.h"
#include "Tile.h"
using namespace Graph_lib;
enum class MouseButton { left = FL_LEFT_MOUSE, right = FL_RIGHT_MOUSE }; //
// Minesweeper GUI
class MinesweeperWindow : Graph_lib::Window
{
public:
//størrelsen til hver rute
static constexpr int cellSize = 30;
MinesweeperWindow(Point xy, int width, int height, int mines, const string& title);
private:
const int width;//width i miner
const int height;//heigth i miner
const int mines;//Antall miner
Vector_ref<Tile> tiles; // Vektor som inneholder alle tiles
//Height og Width i piksler
int Height() const { return height * cellSize; }
int Width() const { return width * cellSize; }
// F� en liste med naborutene rundt en tile
vector<Point> adjacentPoints(Point xy) const;
//tell miner basert p� liste
int countMines(vector<Point> coords) const;
//Sjekk at punkt er p� brettet og gj�r det til Tile
bool inRange(Point xy) const { return xy.x >= 0 && xy.x < Width() && xy.y >= 0 && xy.y < Height(); }
Tile& at(Point xy) { return tiles[xy.x / cellSize + (xy.y / cellSize) * width]; }
const Tile& at(Point xy) const { return tiles[xy.x / cellSize + (xy.y / cellSize) * width]; }
//�pne og flagge rute
void openTile(Point xy);
void flagTile(Point xy);
//callback funksjon for tile knappen
static void cb_click(Address, Address pw);
};