Ciele

  1. Precvičiť vytváranie objektových programov v jazyku Java.
  2. Pochopiť význam rozhraní v objektovom programovaní.
  3. Naučiť sa vytvárať rozhrania v jazyku Java.
  4. 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

  1. Úloha: V balíku minesweeper definujte rozhranie UserInterface ako predpis, ktorý musia spĺňať používateľské rozhrania pre aplikáciu Minesweeper.
    Toto rozhranie vygenerujte z existujúceho zdrojového kódu triedy ConsoleUI nasledujúcim postupom.
    • 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 a update, ktoré majú byť zahrnuté vo vytváranom rozhraní a pokračujte ďalej.
    • Presuňte vytvorené rozhranie UserInterface do balíka minesweeper použitím Drag&Drop v stromovej štruktúre projektu (záložka „Projects”).
    • V triede Minesweeper zmente typ členskej premennej userInterface z ConsoleUI na UserInterface.
  2. 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 znak X.
    • 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 znak M.
    • Pre vykreslenie neoznačenej dlaždice (CLOSED) sa používa znak -.
    Úloha: Implementujte metódu void update() v triede ConsoleUI, ktorá zabezpečí vykreslenie herného poľa.
    Pre zobrazenie formátovaného výstupu (napríklad pri zobrazení označenia riadkov) použite metódu System.out.printf(...).
  3. 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ódu boolean isSolved() definovanú v triede Field, ktorá určuje úspešné odkrytie hracieho poľa.
    Hra 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 int getNumberOf(Tile.State state), ktorá vráti počet dlaždíc v danom stave.
  4. Aktuálny model tried aplikácie je nasledujúcom obrázku.
    Obr.: : Diagram tried aplikácie Minesweeper (na konci cvičenia 5)
  5. Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí NetBeans!
comments powered by Disqus