3 * Author: Petr Kubiznak
13 //predvolby pro nastaveni hry (rozmery desky a pocet min)
14 static const int PRESETS
[3][4] = {
15 { 3, 5, 5, 4 }, //rookie (3 vrstvy, 5 radek, 5 sloupcu, 4 miny)
16 { 5, 8, 8, 20 }, //advanced
17 { 8, 12, 12, 100 } //suicide
23 int layers
, rows
, cols
;
26 /* rozmisti miny po hracim poli */
28 /* ocisluje policka podle pritomnosti min na sousednich polich */
29 int numberBoard(void);
32 //mod hry odpovidajici zvolenemu nastaveni
33 enum GameMode
{ModeRookie
=0, ModeAdvanced
=1, ModeSuicide
=2, ModeCustom
=3};
35 /* vytvori 3d hraci pole o rozmerech w x h x d a rozlozi do nej zadany pocet min */
36 Board(int w
, int h
, int d
, int minesCount
);
39 /* vraci pocet vrstev */
40 int getLayersCount(void) const;
41 /* vraci pocet radku */
42 int getRowsCount(void) const;
43 /* vraci pocet sloupcu */
44 int getColsCount(void) const;
45 /* vraci pocet min v celem poli */
46 int getMinesCount(void) const;
47 /* vraci referenci na pole dane souradnicemi
48 * v pripade neplatnych souradnic vyhazuje vyjimku ERR_OUT_OF_BOUNDS */
49 Field
& getField(int layer
, int row
, int col
) const;
50 /* ternarni operator () - getter pro ziskani pole na danych souradnicich (vola getField)
51 * v pripade neplatnych souradnic vyhazuje vyjimku ERR_OUT_OF_BOUNDS */
52 Field
& operator () (int layer
, int row
, int col
) const;
53 /* vytiskne cele pole (pro debug) */
54 void print(void) const;
55 /* pretizeny operator vystupu - tiskne cele pole v hernim modu */
56 friend ostream
& operator << (ostream
&os
, const Board
&board
);
57 /* odkryje zadane pole, nema-li v okoli zadne miny, odkryje i sousedni pole;
58 * vraci true, pokud je pritomna mina */
59 bool uncover(int layer
, int row
, int col
);
60 /* vraci true, pokud jsou odkryta vsechna pole bez min */
61 bool isCleared(void) const;
62 /* vraci pocet poli oznacenych jako zaminovana */
63 int getMarkedCount(void) const;
65 /* vraci herni mod podle rozmeru desky */
66 Board::GameMode
getMode(void) const;
67 /* vraci herni mod podle zadanych rozmeru */
68 static Board::GameMode
getMode(int layers
, int rows
, int cols
, int mines
);