IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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
Hru je možné kedykoľvek pozastaviť.

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#

 

Všetky články v sekcii
Zdrojákoviště C # .NET - Okenné aplikácie WPF
Článok pre vás napísal Petr Domes (petrds)
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programuji v .NET. Ovládám C#, .ASP, WF, WPF, SQL
Aktivity