Ciele
- Naučiť sa vytvárať a používať vlastné balíky v jazyku Java.
- Naučiť sa používať refaktorizáciu Encapsulate Fields v prostredí NetBeans IDE.
- Vyskúšať si implementáciu objektových programov.
Úvod
-
V modeli sú uvedené metódy, ktoré nie sú uvedené v zdrojových kódoch.
Úlohou dnešného cvičenia bude upraviť zdrojové kódy tak aby zodpovedali modelu.
Postup
-
Pri implementácii použite refaktorizáciu
Encapsulate Fields
v prostredí NetBeans IDE. Pomocou tejto refaktorizácie je možné pre zvolenú premennú objektu vygenerovať set respektíve get metódu - zapúzdrenenie.Úloha: Pridajte metódu intZvoľte členskú premennúgetValue()
do triedyClue
.value
(nastavte kurzor na deklaráciu premennej value v triedeClue
), stlačte pravé tlačidlo myši a z kontextového menu zvoľte „Refactor > Encapsulate Fields”. Uistite sa, že je zvolené „Create Getter” a pokračujte pomocou tlačidla „Next”.Úloha: Pridajte metódyint getRowCount()
,int getColumnCount()
,int getMineCount()
aGameState getState()
do triedyField
použitím refaktorizácieEncapsulate Fields
.Úloha: Pridajte metóduTile getTile(int row, int column)
do triedyField
, ktorá vráti dlaždicu podľa zadaného riadku a stĺpca. Riadky a stĺpce sú číslované od0
.Úloha: Implementujte metóduvoid markTile(int row, int column)
v triedeField
. Metóda slúži na označenie/odznačenie dlaždice špecifikovanej riadkom a stĺpcom. V prípade, že je dlaždica neodkrytá (CLOSED
) bude jej stav zmenený na označená (MARKED
). Ak je dlaždica označená (MARKED
) bude jej stav zmenený na neodkrytá (CLOSED
). Riadky a stĺpce sú číslované od0
. -
Ďalší krok pri implementácii hry Minesweeper je náhodné vygenerovanie obsahu herného poľa.Úloha: Implementujte metódu
void generate()
v triedeField
tak, aby v hernom poli tiles náhodne rozložila míny (Mine
) a doplnila pomocné polia (Clue
), pričom počet mín, ktoré majú byť rozložené je daný premennoumineCount
.Poznámka: Náhodné vygenerovanie hracieho poľa rozdeľte do dvoch fáz- náhodné uloženie mín do poľa - metóda
void generateMines()
- doplnenie pomocných polí na miesta, ktoré neobsahujú mínu - metóda
void fillWithClues()
private void generate() { generateMines(); fillWithClues(); }
Poznámka: Pre náhodné generovanie čísel vytvorte objekt triedyjava.util.Random
(použite metódu objektuint nextInt(int n)
).Poznámka: Na náhodne zvolené súradnice v hernom poli vložte dlaždicu typuMine
ak pole na daných súradniciach už neobsahuje mínu (tiles[row][column] == null
). Postup opakujte pokiaľ nebude uložený požadovaný počet mín. Po realizácii tejto úlohy bude hracia plocha obsahovať iba dlaždice typu mína.Poznámka: Doplňte herné pole dlaždicami typuClue
(pomoc pri vyhľadávaní). Pre tento typ dlaždice je potrebné nastaviť hodnotu identifikujúcu počet dlaždíc s mínami v jej priamom susedstve.Poznámka: Prejdite v cykle celé hracie pole. Pre každú neobsadenú pozíciu (platítiles[row][column] == null
) zistite počet susedných mín pomocou už implementovanej metódyint countAdjacentMines(int row, int column)
. - náhodné uloženie mín do poľa - metóda
-
Okomentujte všetky doposiaľ vytvorené metódy.
-
Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí NetBeans!
void markTile(int row, int column)
sa inšpirujte metódouvoid openTile(int row, int column)
.