Zadanie č. 2: Sokoban Game

Znenie zadania

Implementujte hru Sokoban v jazyku C pomocou knižnice ncurses. Herný svet nech podporuje Sokoban Level Format s voliteľnou podporou pre Run Level Encoding. Hra bude obsahovať postupnosť levelov, ktoré sa načítajú pri spustení hry zo súboru a počas behu hry budú v pamäti reprezentované pomocou spojkového zoznamu.

Pravidlá hry sú nasledovné:

Termín odovzdania

Zadanie sa bude riešiť na cvičeniach v týždňoch 9. až 11. Termín, do ktorého je potrebné zadanie odovzdať, je nedeľa, 6. mája 2012, 23:55.

Všeobecné informácie

Odovzdané zadanie prejde kontrolou originality, ktorá sa uskutoční voči aktuálne vypracovaným zadaniam ako aj zadaniam z minulých rokov. Pokiaľ sa zistí, že študent odovzdal kópiu iného riešenia, nesplní základnú podmienku získania zápočtu a ten mu nebude udelený (bez možnosti opätovného pokusu odovzdať zadanie). Pokiaľ odovzdané zadanie bude vlastné iba čiastočne, zadanie nebude akceptované. Študent bude mať ešte jeden pokus dopracovať zadanie, ale jeho hodnotenie bude penalizované do -5 bodov. O výške penalizácie rozhodne príslušný cvičiaci.

Toto zadanie je zamerané na overenie znalostí z nasledujúcich oblastí:

Spracovanie hry a vlastná implementácia

Grafické prevedenie hry

Grafické prevedenie hry môže vyzerať nasledovne:

DELIVER STEPS
5/6     41

    #####             
    #   #             
    #$ $#             
  ###   ###           
  #   $   #           
### #$### #     ######
#   # ### #######  .*#
# $             @  ..#
##### #### ######  ..#
    #      ###  ######
    ########

Legenda:

Reprezentácia levelov hry

Každá úroveň hry bude reprezentovaná pomocou formátu Sokoban Level Format. Voliteľne môžete implementovať podporu pre Run Level Encoding.

Na začiatku hry sa táto postupnosť načíta z na to určeného súboru. Následne sa z týchto levelov a ďalších metaúdajov vytvorí spojkový zoznam, ktorý bude existovať počas celého spustenia hry. Po jej ukončení sa tento zoznam uvoľní z pamäte.

O každom leveli bude potrebné uchovávať tieto informácie:

Ukážka takejto postupnosti levelov:

+----------------------------------------------------------------------------------------------------------------------------------------------------+
| name:        "Level Zero"                                                                                                                          |
| description: "Every saga has a beginning..."                                                                                                       |
| map:         "4-5#9--|4-#3-#9--|4-#$2-#9--|2-3#2-$3#9-|2-#2-$--$-#9-|3#-#-3#-#5-6#|#3-#-3#-7#2-2.#|#-$--$9-4-2.#|5#-4#-#@4#2-2.#|4-#6-3#2-6#|4-8#" |
| password:    "zero"                                                                                                                                |
+----------------------------------------------------------------------------------------------------------------------------------------------------+
                                                                            |
                                                                            |
                                                                            v
                                            +-------------------------------------------------------------+
                                            | name:        "The Big Issue"                                |
                                            | description: "There is no description"                      |
                                            | map:         "7#|#.v-#-#|#$*-$-#|#3-$-#|#-2.2-#|#2-*2-#|7#" |
                                            | password:    "issue"                                        |
                                            +-------------------------------------------------------------+

Ukážka formátu vstupného súboru, ktorý bude obsahovať uvedené levely

Level Zero;Every saga has a beginning...;zero;4-5#9--|4-#3-#9--|4-#$2-#9--|2-3#2-$3#9-|2-#2-$--$-#9-|3#-#-3#-#5-6#|#3-#-3#-7#2-2.#|#-$--$9-4-2.#|5#-4#-#@4#2-2.#|4-#6-3#2-6#|4-8#
The Big Issue;There is no description;issue;7#|#.v-#-#|#$*-$-#|#3-$-#|#-2.2-#|#2-*2-#|7#
    

V prípade, že máte problém s vytváraním vlastných levelov, ako inšpiráciu môžete použiť levely na týchto stránkach:

Požiadavky pre úspešné odovzdanie zadania

Štruktúra balíčka na odovzdanie

Zadanie sa odovzdáva formou zip balíčku, pričom jeho názov bude reprezentovaný jedinečným identifikátorom študenta s rokom odovzdavania v tvare: ROK_AB123CD.zip. Zip balíček bude obsahovať nasledujúcu štruktúru priečinkov, pričom počiatočné lomítko '/' reprezentuje koreňový priečinok v balíčku:

Poznámka: Je dôležité, aby vaše súbory zachovali uvedenú štruktúru. Ak sa niektorý zo súborov nachádza v balíčku, ale mimo uvedenej štruktúry, bude to považované za chybu a takto odovzdaný balíček nebude považovaný za správny.

Dokumentácia

Dokumentácia ku zadaniu predstavuje jeden dokument vo formáte .pdf alebo priečinok html/ vygenerovaný ako výstup z vhodného nástroja, napr. Doxygen. Dokumentácia sa skladá z týchto častí:

$Id$