OZNAM

V pondelok nebude cvicenie!

Ciele

  1. Oboznámiť sa s podmienkami realizácie prípadovej štúdie Minesweeper.
  2. Naštudovať úvodnú špecifikáciu požiadaviek pre aplikáciu Minesweeper.
  3. Rozlíšiť operátory jazyka Java, pochopiť ich význam a použitie.
  4. 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

  1. 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.
  2. 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.
    Obr.: : Hra Minesweeper
    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:)
  3. Vytvorte nový projekt v prostredí NetBeans IDE s názvom Minesweeper. Pridajte do adresára src vytvoreného projektu obsah archívneho súboru minesweeper.zip. Nastavte hlavnú triedu projektu v prostredí NetBeans na minesweeper.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.
  4. 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.
  5. Oboznámte sa s triedami v projekte, ich hierarchiou a väzbou.
    • Trieda Minesweeper je hlavnou triedou aplikácie, obsahuje metódu main.
    • 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.
    Nasledujúci obrázok je diagramom tried.
    Obr.: : Diagram tried hry Minesweeper
    Dlaždica môže byť v stave odkrytá OPEN, neodkrytá CLOSED alebo označená MARKED.
    Obr.: : Diagram stavov dlaždice
    Hra môže prebiehať (stav PLAYING), byť úspešne ukončená (stav SOLVED) alebo byť neúspešne ukončená (stav FAILED).
    Obr.: : Diagram stavov hry
  6. 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 triedu Tile pomocou riadku private Tile[][] tiles;.
  7. 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 triedy Field.
    Otvorte v prostredí triedu Field. Nastavte sa na deklaráciu členskej premennej tiles 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?
  8. 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á:
    
        .
        ├── Minesweeper
        │   └── src
        │       └── minesweeper
        │           └── ...
        ├── README
        └── .gitignore
    
    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á:
    Ú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.
  9. Vymažte projekt z disku a zrušte všetky vami vytvorené nastavenia v prostredí NetBeans!

Zdroje

  1. Detailnejšie informácie o hre Minesweeper www.wikipedia.org
  2. Zdrojové kódy: minesweeper.zip
comments powered by Disqus