Ciele
- Oboznámiť sa s podmienkami realizácie prípadovej štúdie Minesweeper.
- Naštudovať úvodnú špecifikáciu požiadaviek pre aplikáciu Minesweeper.
- Rozlíšiť operátory jazyka Java, pochopiť ich význam a použitie.
- Oboznámiť sa s významom a použitím objektov v programovaní.
Úvod
-
Na aktuálnom a nasledujúcich cvičeniach budete realizovať prípadovú štúdiu Minesweeper.
Postup
-
Návody na cvičenia budú obsahovať postupnosť krokov vedúcich k vytvoreniu aplikácie Minesweeper použitím technológie Java ale samotný program budete vytvárať vy. V štúdii budete pokračovať priebežne, preto je nutné zabezpečiť si prenos zdrojových textov na nasledujúce cvičenie. Vytvorenú aplikáciu Minesweeper je nutné odovzdať najneskôr v zápočtovom týždni. Odovzdávaná aplikácia musí obsahovať všetky požadované vlastnosti a mať požadovanú štruktúru v zmysle návodu na cvičenia. Súčasťou aplikácie je aj dokumentácia vygenerovaná zo zdrojových kódov a unit testy.
-
Minesweeper je počítačová hra určená pre jedného hráča. Cieľom hry je vyčistenie mínového poľa od mín bez ich detonácie. Požiadavka klienta je vytvorenie hry Minesweeper. Detailnejšie informácie o hre je možné získať na www.wikipedia.org. Našťastie s niektorými úlohami vám pomáha skúsený spolupracovník a aj preto nebudete začínať na zelenej lúke. Napríklad v tomto cvičení vám spolupracovník dodal diagram tried, zopár zdrojových textov a niekoľko nápadov.Poznámka: Samozrejme, že v úlohe spolupracovníka vystupuje cvičiaci. (Aby ste vedeli koho sa pýtať a komu prejaviť vďaku:)
-
Vytvorte nový projekt v prostredí NetBeans IDE s názvom
Minesweeper
. Pridajte do adresárasrc
vytvoreného projektu obsah archívneho súboru minesweeper.zip. Nastavte hlavnú triedu projektu v prostredí NetBeans naminesweeper.Minesweeper
. Ak spustíte vytvorený projekt, dôjde k vzniku výnimky (java.lang.UnsupportedOperationException: Method generateField not yet implemented
). Napriek tomu, že projekt je možné preložiť, hra nebude funkčná. Implementovať hru bude vašou úlohou. -
Oboznámte sa s balíkmi v projekte.
-
Balík
minesweeper
je základným balíkom a obsahuje hlavné triedy aplikácie. -
Balík
minesweeper.core
obsahuje triedy definujúce logiku hracieho poľa nezávisle od používateľského rozhrania. -
Balík
minesweeper.consoleui
obsahuje triedy definujúce interakciu s používateľom.
-
Balík
-
Oboznámte sa s triedami v projekte, ich hierarchiou a väzbou.
-
Trieda
Minesweeper
je hlavnou triedou aplikácie, obsahuje metódumain
. -
Trieda
ConsoleUI
definuje interakciu hracieho poľa s používateľom. -
Trieda
Field
reprezentuje hracie pole a jeho funkčnosť. Hracie pole obsahuje dlaždice. -
Trieda
Tile
reprezentuje dlaždicu hracieho poľa. - Dlaždice sú dvoch typov: mína a pomoc pri hľadaní mín.
-
Trieda
Mine
reprezentuje dlaždicu typu mína. -
Trieda
Clue
reprezentuje dlaždicu typu pomoc pri hľadaní mín. -
Stav dlaždice je vyjadrený pomocou enumerácie
Tile.State
. -
Stav hry je vyjadrený pomocou enumerácie
GameState
.
OPEN
, neodkrytáCLOSED
alebo označenáMARKED
. Hra môže prebiehať (stavPLAYING
), byť úspešne ukončená (stavSOLVED
) alebo byť neúspešne ukončená (stavFAILED
). -
Trieda
-
Vyskúšajte si prechádzanie medzi zdrojovými kódmi stlačením klávesy „CTRL” a súčasným stlačením ľavého tlačidla myši (mena triedy, premennej, metódy, atď.), resp. prostredníctvom kontextového menu nad hľadaným zdrojom zvolením položky „Navigate > ...”.Úloha: Otvorte v prostredí triedu
Field
. Prejdite pomocou „CTRL” a súčasným stlačením ľavého tlačidla myši na trieduTile
pomocou riadku privateTile[][] tiles;
. -
Naučte sa vyhľadávať miesta v zdrojovom kóde kde je použitá daná metóda, premenná resp. trieda. Nastavte kurzor na požadované miesto a zvoľte z kontextového menu „Find Usages”.Úloha: Vyhľadajte všetky miesta kde sa používa premenná tiles triedyOtvorte v prostredí triedu
Field
.Field
. Nastavte sa na deklaráciu členskej premennejtiles
a zvoľte z kontextového menu „Find Usages”.Úloha: Aké údajové typy su použité v danom projekte? Ktoré z nich sú primitívne? -
Pridajte vytvorený projekt do vášho projektu na serveri GitHub, ktorý ste vytvorili minulý týždeň. Štruktúra Vášho projektu spolu s predpísaným súborom README bude po dnešnom cvičení nasledovná:
Po úspešnom pridaní projektu do systému Git dostanete na Vašu študentskú e-mailovú adresu e-mail s názvom "First submission of Minesweeper Task 01 Problemset". V jeho texte nájdete odkaz na vyhodnotenie v systéme Arena. Po kliknutí na tento odkaz by ste mali vidieť zoznam svojich odovzdaní: Nové odovzdanie sa zobrazí len ak bude vykonaný nový push do systému Git. Odovzdávania sa kontrolujú v intervale každých 3 hodín. Po kliknutí na "VIEW SUBMISSION" sa zobrazí konkrétne odovzdanie. V odovzdaní je možné vidieť zoznam jednotlivých testov, pričom zelenou farbou sú vyznačené úspešné testy a oranžovou neúspešné: Po kliknutí na názov konkrétneho testu (napr. CLUE TEST) sa rozbalí detailný popis testu: V prípade neúspešného testu je možné pri rozbalení detailu vidieť dôvod neúspechu a odkaz na modul a krok, v ktorom mala byť úloha vyriešená:. ├── Minesweeper │ └── src │ └── minesweeper │ └── ... ├── README └── .gitignore
Úloha: Skontrolujte si svoje hodnotenie v systéme Arena.Zadanie musí byť odovzdané do systému Git vždy v danom týždni najneskôr do 12:00 pred vaším cvičením. -
Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí NetBeans!
Zdroje
- Detailnejšie informácie o hre Minesweeper www.wikipedia.org
- Zdrojové kódy: minesweeper.zip