Cvičení 1
Cílem cvičení bude implementovat padající kostičky Tetrisu, a to pomocí čtyř různých variant reprezentace těchto kostiček/scény.
-
Založte nový projekt typu konzolová aplikace ve vámi zvoleném IDE a seznamte se s adresářovou strukturou projektu.
-
Implementace pomocí zanořených polí
- Vytvořte třídu JaggedArray a v ní metodu Run, která bude sloužit jako vstupní bod pro spuštění dané implementace. V rámci metody Run pole polí logických hodnot, které bude reprezentovat hrací plochu (
true = kostička, false = prázdné místo).
- Implementujte dvě metody pro vytvoření dvou různých typů kostiček (například T a Z). Tyto metody budou přijímat jako parametry souřadnice X a Y budoucí kostičky a pole, ve kterém se má daná kostička vytvořit. Metody použijte v metodě Run.
- Vyzkoušejte si přidání breakpointu a zkontrolujte, zda se kostičky v poli skutečně vytvořily.
- Implementujte metodu MainLoop, která bude přijímat jako parametr naše dvojrozměrné pole. V rámci metody implementujte kód, který na základě předaného pole provede vykreslení scény do konzole. Jednotlivé kostičky vykreslete pomocí znaku Unicode \u2588 (jedná se o obdélník – čtverec získáte vykreslením dvou těchto znaků vedle sebe). Metodu MainLoop následně zavolejte z metody Run a ověřte, že vykreslení funguje. Při implementaci využijte metody a vlastnosti
Console.Clear, Console.SetCursorPosition, Console.ForegroundColor, Console.BackgroundColor a Console.CursorVisible.
- V rámci metody Run spusťte metodu MainLoop v nekonečné smyčce. Po každém zavolání metody MainLoop spusťte následující kód:
Thread.Sleep(1000);
- V rámci metody MainLoop implementujte posun kostiček (při každém zavolání metody dojde k posunu o 1 směrem dolů).
-
Implementace pomocí pole tříd
- Vytvořte třídu ClassArray, která bude reprezentovat danou implementaci.
- Vytvořte třídu Brick, která bude reprezentovat jednu kostičku (jeden čtvereček) a bude mít svou souřadnici X a Y v rámci složené kostičky (viz další bod).
- Vytvořte třídu CompositeBrick, která bude reprezentovat složenou kostičku (konkrétní tvar). Tato třída bude mít svou souřadnici X a Y v rámci scény a bude obsahovat pole kostiček (třída Brick).
- Implementujte identickou logiku jako v bodě 2., ale tentokrát s využitím pole výše zmíněných tříd. Vaše implementace musí splňovat následující:
- metody pro vytváření složených kostiček budou přijímat jako parametry souřadnice X a Y a odkaz na pole složených kostiček, do kterého se má daná složená kostička vytvořit,
- pro posun složených kostiček vytvořte samostatnou metodu, které předáte složenou kostičku a která provede její posun.
Volitelná část
-
Implementace pomocí vícerozměrného pole
- Vytvořte třídu MultidimensionalArray, která bude reprezentovat danou implementaci.
- Implementujte identickou logiku jako v bodě 2., ale tentokrát s využitím vícerozměrných polí.
-
Implementace pomocí pole struktur
- Vytvořte třídu StructureArray, která bude reprezentovat danou implementaci.
- Implementujte identickou logiku jako v bodě 3., ale tentokrát s využitím struktur.