NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Hra Sudoku v C# .NET WPF

Motivace

Hra Sudoku je poměrně dosti rozšířená, hlavně v řadách seniorů. Na internetu lze nalézt mnoho stránek nabízejících hru on-line. Lze nalézt i aplikace ke stažení, ale jsou často placené nebo nejsou příliš kvalitní.

Rozhodl jsem se vytvořit aplikaci, která mi jako seniorovi bude vyhovovat. Program je realizován ve Visual studiu jazykem C# .NET WPF. Použití WPF je ideální pro vytvoření uživatelského rozhraní Sudoku. Každá buňka Sudoku je samostatný TextBox, který lze snadno modifikovat (typem písma, barvou pozadí, blokováním zápisu a ovládáním myší).

Implementace

Standardní mřížka Sudoku 9x9 je vytvořena 81 buňkami (typu TextBox). Pro ovládání myší je vpravo vedle mřížky sloupec tlačítek (Button) 1 až 9. Pod mřížkou jsou tlačítka volby obtížnosti (Snadná hra, Obtížná hra, Mistrovská) a výběr diagonální hry (SudokuX). Je zde i tlačítko Nápověda.

Navržené uživatelské rozhraní koresponduje s programovým kódem hry. Nejprve byl realizován kód zajišťující dodržení pravidel Sudoku. V případě zápisu nesprávného čísla je generováno upozornění ("Porušení pravidel Sudoku").

Algoritmus

Dále bylo třeba vytvořit kód, který by připravil hru (naplnil mřížku čísly a blokoval jejich smazání). Čísla samozřejmě musí být rozmístěna tak, aby Sudoku šlo doplnit. Na internetu jsem nalezl řadu způsobů jak to realizovat. Vybral jsem následující:

Nejprve je třeba zmínit, že obrazem buněk mřížky je v kódu matice (9x9). Naplnil jsem 81 čísly tři matice pro klasickou hru a tři matice pro diagonální hru splňující pravidla Sudoku. Po spuštění hry je náhodným výběrem zvolena jedna matice. Vybraná matice je podrobena náhodnému odebrání čísel z matice v počtu odpovídajícím zvolené obtížnosti hry. Odebráno je 40, 50 nebo 60 čísel. Dále je tato matice modifikována několika akcemi. Nejprve je náhodným výběrem provedena výměna čísel v matici (např. 1 je změněna na 3, 3 je změněna na 5 atd. pro všech devět číslic). Následují dva způsoby výměn řádků a sloupců. Matice představuje tři trojice řádků a tři trojice sloupců. Nejprve je provedena rotace řádků a sloupců v jednotlivých trojicích. Po té následuje rotace celých trojic řádků a sloupců. Takto modifikovaná matice je přenesena do mřížky uživatelského rozhraní. Čísla umístěná v mřížce jsou blokována proti přepsání nebo výmazu. Hra může začít. Je zahájeno odpočítávání času. Po úspěšném vyplnění celé mřížky je oznámena doba hry.

V příloze je k dispozici spustitelný program Sudoku.exe. Program vyžaduje Microsoft .NET Framework 4.7.2 a vyšší a operační systém Windows 7 a vyšší. Program byl realizován na Windows 10 s .NET Framework 4.8. K dispozici je i zdrojový kód programu.


Galerie

Program byl vytvořen v roce 2020.

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 38x (1.31 MB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Všechny články v sekci
Zdrojákoviště C# .NET - Okenní aplikace WPF
Program pro vás napsal itnavi
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor se věnuje tvorbě a správě webových stránek a programování v C#
Aktivity