Ciele

  1. Naučiť sa vytvárať a používať vlastné balíky v jazyku Java.
  2. Naučiť sa používať refaktorizáciu Encapsulate Fields v prostredí NetBeans IDE.
  3. 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.
    Obr.: : Diagram tried aplikácie Minesweeper (na konci cvičenia 4)

Postup

  1. 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 int getValue() do triedy Clue.
    Zvoľte členskú premennú value (nastavte kurzor na deklaráciu premennej value v triede Clue), 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ódy int getRowCount(), int getColumnCount(), int getMineCount() a GameState getState() do triedy Field použitím refaktorizácie Encapsulate Fields.
    Úloha: Pridajte metódu Tile getTile(int row, int column) do triedy Field, ktorá vráti dlaždicu podľa zadaného riadku a stĺpca. Riadky a stĺpce sú číslované od 0.
    Úloha: Implementujte metódu void markTile(int row, int column) v triede Field. 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é od 0.
    Poznámka: Pri implementácii metódy void markTile(int row, int column) sa inšpirujte metódou void openTile(int row, int column).
  2. Ďalší krok pri implementácii hry Minesweeper je náhodné vygenerovanie obsahu herného poľa.
    Úloha: Implementujte metódu void generate() v triede Field 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ý premennou mineCount.
    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()
    Inšpirujte sa nasledujúcim fragmentom zdrojového kódu.
    
    private void generate() {
        generateMines();
        fillWithClues();
    }
    
    Poznámka: Pre náhodné generovanie čísel vytvorte objekt triedy java.util.Random (použite metódu objektu int nextInt(int n)).
    Poznámka: Na náhodne zvolené súradnice v hernom poli vložte dlaždicu typu Mine 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 typu Clue (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ódy int countAdjacentMines(int row, int column).
  3. Okomentujte všetky doposiaľ vytvorené metódy.
  4. Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí NetBeans!
comments powered by Disqus