|
|
# Cvičenie 5
|
|
|
|
|
|
__BREAKING CHANGES: PREMENOVANÉ ROZHRANIA - PRIDANÁ PREDPONA `I` (`ICommand, IWorld, IPhysics`)__ aby boli dodržané C# naming conventions
|
|
|
|
|
|
## 5.1 There are no ghosts here
|
|
|
|
|
|
Pri implementácií `Move` ste zatiaľ neriešili kolíziu s prostredím. Napriek tomu, že už od nepamäti poznáme spôsob, ako prechádzať cez steny (nazvali ho dvere), v hre by bolo implementovať funkcionalitu, ako postavičke zabrániť v pohybe cez stenu.
|
... | ... | @@ -16,12 +14,12 @@ Vytvorte si triedu `Gravity` v priečinku `Commands`. Nech implementuje rozhrani |
|
|
|
|
|
`IPhysics.Execute()` sa automaticky volá stále v hernej slučke - viete teda v `Gravity` implementovať postupné padanie predmetov:
|
|
|
|
|
|
- Každý actor implementuje 2 metódy - `bool IsPhysicsEnabled()` a `void SetPhysics(bool isPhysicsEnabled)` - pomocou nich dokážeme regulovať, či bude daný actor ovplyvnený fyzikou alebo nie - môžeme takto nechať nejaký predmet lietať vo vzduchu.
|
|
|
- Každý actor implementuje 2 metódy - `bool IsAffectedByPhysics()` a `void SetPhysics(bool isPhysicsEnabled)` - pomocou nich dokážeme regulovať, či bude daný actor ovplyvnený fyzikou alebo nie - môžeme takto nechať nejaký predmet lietať vo vzduchu.
|
|
|
- `IWorld` má v sebe metódu `GetActors()` - táto vráti zoznam všetkých actorov vo svete.
|
|
|
- Zatiaľ využite `Move` na pád, ale musíte stále vytvárať nové inštancie (dočasne zakomentujte typovú kontrolu pre `IMovable` v `Move` (a upravte ho, nech akceptuje `IActor` nie `IMovable`) - za chvíľu sa k tomu vrátime a ukážeme si niečo viac o práci s typovými parametrami a Action design pattern) - nevýhoda je zvytočné vytváranie množstva objektov.
|
|
|
- v cykle, napríklad `foreach` si implementujte pád, nezabudnite zohľadniť či je daný predmet ovplyvnený gravitáciou.
|
|
|
|
|
|
__Nezabudnite si pridať do sveta gravitáciu - `container.GetWorld().SetGravity(new Gravity())`!__
|
|
|
__Nezabudnite si pridať do sveta gravitáciu - `container.GetWorld().SetPhysics(new Gravity())`!__
|
|
|
|
|
|
## 5.3 Aaaand `Action<T>`
|
|
|
|
... | ... | @@ -95,7 +93,7 @@ Viac o lambda výrazoch nájdete tu: [Microsoft dokumentácia](https://docs.micr |
|
|
|
|
|
## 5.5 Jump
|
|
|
|
|
|
Vytvorte triedu Jump, ktorá umožní hráčovi skákať, zvážte použité rozhranie.
|
|
|
Vytvorte triedu Jump, ktorá umožní hráčovi skákať, zvážte použité rozhranie. Implementácia správanie je na vás, ale pozor: výška skoku musí byť konečná.
|
|
|
|
|
|
## 5.6 My very own enemy
|
|
|
|
... | ... | @@ -110,5 +108,5 @@ Random random = new Random(); //initialize pseudorandom number generator, do thi |
|
|
|
|
|
//some awesome code...
|
|
|
|
|
|
int x = random.Next(min,max); //get random number from the given range
|
|
|
int x = random.Next(min, max); //get random number from the given range
|
|
|
``` |
|
|
\ No newline at end of file |