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.

  1. Založte nový projekt typu konzolová aplikace ve vámi zvoleném IDE a seznamte se s adresářovou strukturou projektu.

  2. Implementace pomocí zanořených polí

    1. 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).
    2. 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.
    3. Vyzkoušejte si přidání breakpointu a zkontrolujte, zda se kostičky v poli skutečně vytvořily.
    4. 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.
    5. 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);
    6. 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ů).
  3. Implementace pomocí pole tříd

    1. Vytvořte třídu ClassArray, která bude reprezentovat danou implementaci.
    2. 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).
    3. 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).
    4. 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

  1. Implementace pomocí vícerozměrného pole

    1. Vytvořte třídu MultidimensionalArray, která bude reprezentovat danou implementaci.
    2. Implementujte identickou logiku jako v bodě 2., ale tentokrát s využitím vícerozměrných polí.
  2. Implementace pomocí pole struktur

    1. Vytvořte třídu StructureArray, která bude reprezentovat danou implementaci.
    2. Implementujte identickou logiku jako v bodě 3., ale tentokrát s využitím struktur.