Skip to content

adamhosticka/Jetpack-Menace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jetpack Menace - Sandbox hra

Zadání

Naprogramujte jednoduchou 2D sandbox hru.

Hra musí splňovat následující funkcionality

  • Implementujte hráče (postava, loď, …​) a jeho stav (energie, životy, brnění, skore, …​)

  • Vytvořte (soubojový) model zranění - alespoň dvě příčiny (pád z výšky, soubor s nepřítelem, pobyt v lávě, …​)

  • Vytvořte jednoduchý model prostředí (gravitace, přelévání vody (lávy), růst stromů, …​)

  • Naimplementujte načítání (konfigurace generátoru) mapy ze souboru a umožněte ukládat aktuální stav hry.

Kde lze využít polymorfismus? (doporučené)

  • Postavy: hráč, zvířata, přítel (obchodník), nepřítel (různé druhy)

  • Efekty akcí: pád, úder, kontakt s lávou

  • Prostředí: vzduch, voda, hlína, uhlí, kov, láva, žebřík,…​

  • Uživatelské rozhraní: konzole, ncurses, SDL, OpenGL (různé varianty), …​

Specifikace

Jetpack Menace je sandbox hra, ve které hráč lítá prostorem kde se vznáší objekty, zastrašuje nepřátele a snaží se přežít. Na jeho cestě ho mohou potkat nejen nepřátelé, ale také nebezpečné přírodní jevy jako je láva nebo bouře. Hráči se nad hrací plochou zobrazuje počet zabití a stav brnění. Při vstupy do lávy, vlétnutí do bouřky, nebo konfrontaci s nepřátelem se budou probíhat různé interakce (kolize), jejichž důsledkem může být snížení hráčova brnění nebo posun hráče. Pokud hráčovo brnění klesne až na nulu, hra pro hráče končí. Hra je i multiplayer a běží dokud je alespoň jeden z hráčů naživu.

> Enter a command ["help" for command info]:
help
> Help:
    > start [gameName]
    > load  [gameName]
    > help
    > quit
> Enter a command ["help" for command info]:
start prvniHra

-- ostream clears

Kills: 0
Armor: 45
##############################################################
|          @~               @      ~      Y      R           |
|    E     ~    ~          R         Y~       Y              |
|                            Y             ~  @              |
|          Y                   Y   @        @E               |
|       Y          ~R                     E                  |
|         Y   @      R                     Y     @           |
|       @   @  Y           E@      R               ~~Y       |
|  @       Y    ~        @                          E        |
|       ~  ~     ~     ~            Y   R    RRY            R|
|           Y          Y                    E     Y          |
|     YR                 E     ~    R   R~       Y         R |
|     ~        R                                            ~|
|                           R            @                   |
|   ~       ~  ~                Y        ~R                  |
|      E              @   O            R  Y               R  |
|                  ~                               R        E|
|R  R     R  ~                    Y     ~       @~~  Y      R|
|           E              ~    R~  REE           R     ~    |
|                                  R           E        ~    |
|  Y         ~    Y       R  R O                   ~         |
##############################################################

Hráč se narodí uprostřed mapy a kolem něj se vygeneruje zbytek mapy. Mapa se dá také načíst ze souboru. Láva ubírá hráči brnění. Vlétnutí do bouře způsobí, že hráč ztratí kontrolu nad Jetpackem a spadne na zem. Pád také ubírá brnění. Hráč si může zvýšit brnění sbíráním R na mapě, které se čas od času přemístí. Hráč také může narazit na nepřítele E. Pokud ale bude jeho brnění dva a více krát silnější než nepřítelovo, nepřítel se zalekne a zmizí. Pokud ne, proběhne souboj. Stromy slouží pouze jako módní doplněk. Pokud se hráč chvíli nehýbe, působí na něj gravitace a začne pomalu slétávat dolů. # značí stěnu, kterou se nedá prolétnout. | je stěna, kterou když hráč prolétne načte se další chunk

Polymorfismus:

CPlayer: Třída CPlayer je abstraktní třída, která bude mít dva potomky CPlayerHuman a CPlayerAI. Třída CPlayer má polymorfní metodu CPlayer::Move, jejíž implementace se bude lišit mezi potomky. CPlayerAI se bude hýbat pouze, pokud se k němu CPlayerHuman přiblíží, a to tak, že buď se zalekne a uteče(zemře), nebo zůstane stát. CPlayerHuman se bude hýbat podle pokynů uživatele, které přečte ze vstupu.

Polymorfismus nám zde umožní snadné přidání např. nové umělé inteligence, nebo hráče
přes síť.

CObject: Třída CObject je abstratkní třída, jejíž potomci jsou CObjectLava, CObjectTree, CObjectStorm a CObjectArmor. Polymorfismus uplatníme při volání metody CObject::Collision. Metoda se bude lišit pro každého potomka, na základě interakce CPlayerHuman s daným CObjectem.

Díky polymorfismu bude kód kratší a přehlednější. Také díky němu budeme moci jednoduše přidat další objekt do
hry, přidáním nového potomka třídy CObject.

About

Sandbox game.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors