Ciele
- Precvičiť vytváranie objektových programov v jazyku Java.
- Pochopiť význam rozhraní v objektovom programovaní.
- Naučiť sa vytvárať rozhrania v jazyku Java.
- Implementovať generovanie hracej plochy pre hru Minesweeper a zobrazenie herného poľa.
Úvod
-
Jednou z požiadaviek na hru je možnosť používateľa vybrať si rozhranie pre hru (konzolové alebo grafické
rozhranie Swing). Práve z tohto dôvodu je nutné zabezpečiť nezávislosť implementácie hernej logiky aplikácie od
implementácie používateľského rozhrania. Dôvodom používania rozhraní je práve zabezpečenie implementačnej
nezávislosti jednotlivých častí systému. Pre vytvorenie rozhrania, ktoré určí predpis pre pripojenie rôznych
typov používateľského rozhrania použite postup uvedený nižšie.
Postup
-
Úloha: V balíku minesweeper definujte rozhranieToto rozhranie vygenerujte z existujúceho zdrojového kódu triedy ConsoleUI nasledujúcim postupom.
UserInterface
ako predpis, ktorý musia spĺňať používateľské rozhrania pre aplikáciu Minesweeper.-
Nastavte sa do zdrojového súboru triedy
ConsoleUI
priamo na meno tejto triedy. - Stlačte pravé tlačidlo myši a z kontextového menu nad zdrojovým kódom zvoľte „Refactor > Extract Interface…”.
-
Do textového poľa zapíšte názov rozhrania
UserInterface
. -
Zvoľte metódy
newGameStarted
aupdate
, ktoré majú byť zahrnuté vo vytváranom rozhraní a pokračujte ďalej. -
Presuňte vytvorené rozhranie
UserInterface
do balíkaminesweeper
použitím Drag&Drop v stromovej štruktúre projektu (záložka „Projects”). -
V triede
Minesweeper
zmente typ členskej premennejuserInterface
zConsoleUI
naUserInterface
.
-
Nastavte sa do zdrojového súboru triedy
-
V tomto kroku zobrazíme herné pole na štandardný výstup. Na zobrazovanie hracieho poľa na štandardný výstup sú kladené nasledujúce požiadavky:
- Riadky sú označované veľkými písmenami zoradenými podľa abecedy (A, B, ..., I).
- Stĺpce sú označované číslicami (0, 1, ... , 8).
-
Pre vykreslenie odkrytej dlaždice (
OPEN
) typu mína (Mine
) sa používa znakX
. -
Pre vykreslenie dlaždice v stave (
OPEN
) typu pomoc pri hľadaní (Clue
) sa používa číslo reprezentujúce hodnotu dlaždice. -
Pre vykreslenie označenej dlaždice (
MARKED
) sa používa znakM
. -
Pre vykreslenie neoznačenej dlaždice (
CLOSED
) sa používa znak-
.
Úloha: Implementujte metóduPre zobrazenie formátovaného výstupu (napríklad pri zobrazení označenia riadkov) použite metóduvoid update()
v triedeConsoleUI
, ktorá zabezpečí vykreslenie herného poľa.System.out.printf(...)
. -
Pri každom odkrytí herného poľa používateľom sa testuje možnosť ukončenia hry (úspešne alebo neúspešne).Úloha: Implementujte metóduHra je úspešne ukončená ak platí počet všetkých dlaždíc - počet odokrytých dlaždíc = počet mín. Z uvedeného vyplýva, že hra bude ukončená vtedy, ak budú odokryté všetky dlaždice bez mín. Pre určenie počtu odkrytých dlaždíc definujte súkromnú metódu
boolean isSolved()
definovanú v triedeField
, ktorá určuje úspešné odkrytie hracieho poľa.int getNumberOf(Tile.State state)
, ktorá vráti počet dlaždíc v danom stave. -
Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí NetBeans!