Tetris v C # .NET WPF
Naprogramoval som klasickú hru Tetris v C# .NET. Pre grafické rozhranie som použil WPF. Touto hrou som si precvičil dedičnosť, použitie rozhrania a vlákien, prácu s kolekciami a WPF.
Stručný popis riešenia
Gui
Hracie štvorčeková sieť je vytvorená z gridu s desiatimi stĺpci a 20 riadkami. V každej bunke gridu je objekt Rectangle, ktorému sa v priebehu hry mení farba.
Objekty (kocky)
Každý druh kocky skladajúci sa z maximálne 4 čiastkových kociek má svoju vlastnú triedu. Dedí z triedy BaseShapeObject, v ktorej sú implementované posuny do strán a samotná kolekcia bodov. Všetky triedy implementujú rozhranie IObject, v ktorom je definovaná metóda Create pre vytvorenie kocky (tvar / pozície kocky).
Herné logika
Pri ovládanie pohybu kocky sa kontrolujú súradnice bodov kocky, či sú v súradniciach hernej plochy, inak sa pohyb nevykoná. Kolízie a všetky metódy pohybu sú riešené pomocou funkcií generické kolekcie List.
Napr. pohyb doľava. Podmienka či neexistuje bod, ktorý je menší ako počiatok osi X (nula). Ďalšie podmienka rieši kolíziu, či sa na novej pozícii už nejaký bod nenachádza. Ak nie, posunú sa všetky body kocky.
if (!points.Exists(p => (p.X - 1) < 0)) { if (!listOfOtherObjects.Exists(lo => points.Exists(p => (p.X - 1) == lo.X && p.Y == lo.Y))) { points.ForEach(p => { p.X--; }); } }
Na pozadí beží vlákno, ktoré merajú čas posunu kocky nadol. Hodnota začína na 1 sekunde. Každé kolo sa zmenšuje o 20%. Bodovanie je nasledujúci (n je aktuálna kolo):
Počet odbouraných radov | body |
---|---|
jedna | n * 40 + 40 |
dve | n * 100 + 100 |
tri | n * 300 + 300 |
Štyri (tetris) | n * 1200 + 1200 |
Na prípadné otázky či iné možnosti riešenia rád odpoviem
Galéria
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 752x (1.25 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#