IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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é 30x (1.31 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
Program pre vás napísal itnavi
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje tvorbě a správě webových stránek a programování v C#
Aktivity