Slevový týden - Květen Office week
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
30 % bodů zdarma na online výuku díky naší Slevové akci!

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

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

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ženo 6x (2.1 MB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Program pro vás napsal itnavi
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor se věnuje tvorbě a správě webových stránek a programování v C#
Všechny články v sekci
Zdrojákoviště C# .NET - Okenní aplikace WPF
Aktivity (3)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!