CV07 - Zadání - 2

Zadání úlohy na cvičení - kolekce a lambdy

Kolekce

Z vašeho projektu z minulého cvičení nebo z projektu s řešením minulého cvičení (https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab07v2.git)

Přepracujte třídu Level tak aby využívala vhodnu kolekci k ukládání objektů typu DrawableSimulable. Přidejte metody add a remove, které umožní přidávat a odebírat entity ze světa. Musí se, ale provádět v době kdy se neiteruje kolekcí entit. Proto je třeba si v metodách add a remove uložit entity do pomocných kolekcí a až na konci metody simulate vše najednou přidat a odebrat.

  • Upravte tlačítko spawn tak aby přidalo novou příšeru do objektu třídy Level
  • Příšeru upravte tak aby se při kontaktu s hráčem odebrala ze světa a na její místo se vloží objek překážky.

Vnořené třídy - lambdy

Vytvořte rozhraní DeadListener, které umožní posluchačům naslouchat události, která nastane pokud se příšera střetne s hráčem a zemře. Rozhraní bude mít metodu monsterDead a při střetu s hráčem příšera zavolá metodu monsterDead na všechny posluchače. Příšera si musí udržovat kolekci posluchačů rozhraní DeadListener a mít metody addDeadListener a removeDeadListener GameController při vytváření příšer se bude také registrovat jako posluchač a v případě smrti příšery může počítat zásahy. Pro registraci použijte nejprve vnořenou třídu, a z té posléze udělejte lambdu.

Odevzdání

Řešení odevzdejte do systému Kelvin jako úlohu "Java 1 - 7. cvičení v2". Do systému nahrejde celý obsah složky src a soubor pom.xml. Pozor omezte velikost obrázků. Možná velikost uploudu do systému kelvin je omezena. Postupujte dle videa na DU02 k odevzdání v době 3. cvičení.

Následně bude projekt zkompilován a provedou se Unit Testy. Vzhledem k povaze projektu a prozatímnímu testovacímu využití systému Kelvin v předmětu Java 1 v případě selhání nezoufejte.

Jedná se o pomocný test, vše bude ještě hodnoceno ručně. Důležité je nahrát soubory aby bylo možno vše vyhodnotit a provést analýzu na plagiáty. Věřím, že je to je formalita a všichni z Vás tvoří vlastní kód.

Řešení

Řešení zadání najdete v gitu ve větvi solution https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab06v2/-/tree/solution?ref_type=heads