Hra Sudoku v C # .NET WPF
Motivácia
Hra Sudoku je pomerne dosť rozšírená, hlavne v radoch seniorov. Na internete možno nájsť mnoho stránok ponúkajúcich hru on-line. Možno nájsť aj aplikácie na stiahnutie, ale sú často platené alebo nie sú príliš kvalitné.
Rozhodol som sa vytvoriť aplikáciu, ktorá mi ako seniorovi bude
vyhovovať. Program je realizovaný vo Visual štúdiu jazykom C# .NET WPF.
Použitie WPF je ideálny pre vytvorenie užívateľského rozhrania Sudoku.
Každá bunka Sudoku je samostatný TextBox
, ktorý možno ľahko
modifikovať (typom písma, farbou pozadia, blokovaním zápisu a ovládaním
myšou).
Implementácia
Štandardné mriežka Sudoku 9x9 je vytvorená 81 bunkami (typu
TextBox
). Pre ovládanie myšou je vpravo vedľa mriežky stĺpec
tlačidiel (Button
) 1 až 9. Pod mriežkou sú tlačidlá voľby
obtiažnosti (Ľahká hra, Obtiažna hra, Majstrovská) a výber diagonálne hry
(SudokuX). Je tu aj tlačidlo Pomocník.
Navrhnuté užívateľské rozhranie korešponduje s programovým kódom hry. Najprv bol realizovaný kód zaisťujúce dodržanie pravidiel Sudoku. V prípade zápisu nesprávneho čísla je generované upozornenie ( "Porušenie pravidiel Sudoku").
Algoritmus
Ďalej bolo treba vytvoriť kód, ktorý by pripravil hru (naplnil mriežku číslami a blokoval ich zmazanie). Čísla samozrejme musia byť rozmiestnené tak, aby Sudoku šlo doplniť. Na internete som našiel rad spôsobov ako to realizovať. Vybral som nasledovné:
Najprv je potrebné spomenúť, že obrazom buniek mriežky je v kóde matice (9x9). Naplnil som 81 číslami tri matice pre klasickú hru a tri matice pre diagonálne hru spĺňajúce pravidlá Sudoku. Po spustení hry je náhodným výberom vybraná jediná matice. Vybraná matice je podrobená náhodnému odobratie čísel z matice v počte zodpovedajúcom zvolenej obtiažnosti hry. Odobraté je 40, 50 alebo 60 čísel. Ďalej je táto matica modifikovaná niekoľkými akciami. Najprv je náhodným výberom vykonaná výmena čísel v matici (napr. 1 je zmenená na 3, 3 je zmenená na 5 atď. Pre všetkých deväť číslic). Nasledujú dva spôsoby výmen riadkov a stĺpcov. Matica predstavuje tri trojice riadkov a tri trojica stĺpcov. Najprv je vykonaná rotácia riadkov a stĺpcov v jednotlivých trojiciach. Po tej nasleduje rotácie celých trojíc riadkov a stĺpcov. Takto modifikovaná matica je prenesená do mriežky používateľského rozhrania. Čísla umiestnená v mriežke sú blokované proti prepísaniu alebo vymazaniu. Hra môže začať. Je začaté odpočítavanie času. Po úspešnom vyplnení celej mriežky je oznámená doba hry.
V prílohe je k dispozícii spustiteľný program Sudoku.exe. Program vyžaduje Microsoft .NET Framework 4.7.2 a vyššiu a operačný systém Windows 7 a vyšší. Program bol realizovaný na Windows 10 s .NET Framework 4.8. K dispozícii je aj zdrojový kód programu.
Galéria
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 38x (1.31 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#