Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Šachy ve WPF

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Známá desková hra pro dva hráče, ve které se hráči snaží logickým umem a strategií přehrát soupeře. Možnost trénovat proti počítači se třemi úrovněmi obtížnosti.

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

Hra je určena pro Windows 10, 8.1, 8, a 7; 32-bit i 64-bit (je nutné mít nainstalovaný NET Framework 4.6.1).

Grafické uživatelské rozhraní jsem se snažil vytvořit co nejvíce intuitivní a přehledné. Nastavení hry je dynamické, zobrazuje se tedy pouze nastavení, které je užitečné pro daný mód hry (módy = hráč vs hráč, hráč vs ai, ai vs ai).

Aplikace umí dále
ukládat a nahrávat šachové hry
pohybovat se zpět a vpřed v historii provedených tahů
nastavit oběma stranám, zda za figurky bude hrát hráč nebo ai
nastavit, aby ai hrálo samo proti sobě a to s odlišnou obtížností ("inteligencí")
nastavit minimální délku tahu, protože některé ai tahy mohou být velmi rychlé
přenastavit i právě probíhající hru
využívat moderní hardware neboli potenciálu vícejádrových procesorů

Algoritmus pro vyhledávání nejlepších tahů (ai) je minimax. Snažil jsem se ho vylepšit na algoritmus "alfa-beta ořezávání", bohužel neúspěšně. Pokud má někdo s tímto algoritmem zkušenosti, rozhodně ocením každou radu nebo typ, jak ho implementovat. Prostředí by na to mělo být plně připravené.


Galerie

Hra byla vytvořena v roce 2016.

 

Stáhnout

Staženo 253x (460.21 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

 

Hru pro vás napsal Lukáš Fusek
Avatar
Jak se ti líbí článek?
4 hlasů
Autor se věnuje převážně vývoji aplikací na platformě .NET.
Všechny články v sekci
Zdrojákoviště C# .NET - Okenní aplikace WPF
Aktivity (9)

 

 

Komentáře
Zobrazit starší komentáře (16)

Avatar
coells
Redaktor
Avatar
coells:16.3.2016 15:27

Tvůj kód jsem neviděl, ale několik tipů:

  1. zapni si release mode kompilátoru, rozdíl s/bez properties nebude žádný
  2. neřeš foreach nebo for, použij prioritní frontu s greedy heuristikou výběru tahů k analýze
  3. použij hashování na detekci už zpracovaných tahů
 
Odpovědět  +3 16.3.2016 15:27
Avatar
lastp
Redaktor
Avatar
lastp:17.3.2016 22:16

Když člověk nějaký složitý program vytváří několik měsíců a často ho potřebuje ladit, mohou se hodit i takové optimalizace, které se projeví pouze v Debug módu. Když mám nápad na optimalizaci, která mi teď zabere minutu a později mi ušetří mnohem více času, tak se to vyplatí.

 
Odpovědět  +1 17.3.2016 22:16
Avatar
lastp
Redaktor
Avatar
lastp:17.3.2016 22:27

Na anglické wikipedii je článek Negamax, kde je popsán algoritmus, který se často používá u logických her. Zajímavý je hlavně odstavec "Negamax with alpha beta pruning and transposition tables". Vypadá to komplikovaně, ale v podstatě je to podobné algoritmu, který je v souboru AI.cs. Jsou tam navíc hodnoty alfa, beta a hashovací tabulka. Místo fukcí Transposition­TableLookup a Transposition­TableStore lze v C# použít třídu Dictionary. Musí se k tomu ale napsat metoda GetHashCode, která z hrací plochy vypočte hash. Věta "node is a terminal node" znamená mat nebo remíza. Věta "the heuristic value of node" je ohodnocení pozice (součet hodnot sebraných figurek). Funkce GenerateMoves jsou možné tahy. Funkce OrderMoves je heuristika výběru výhodných tahů a k tomu lze použít existující funkci OhodnotUtok.

 
Odpovědět  +1 17.3.2016 22:27
Avatar
Lukáš Hypša:24.3.2016 18:58

Odlišit to jde ale je pravda že věž bývá menší a širší než dáma.

Odpovědět 24.3.2016 18:58
Jsem lama co se roky snaží naučit napsat aspoň pár řádků a furt mu to nejde...
Avatar
Jan Řehák
Člen
Avatar
Jan Řehák:5.4.2016 18:27

na páána :)

 
Odpovědět  +1 5.4.2016 18:27
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Martin Bruna
Člen
Avatar
Martin Bruna:20.6.2016 11:43

Pokud by ses někdy pouštěl do další optimalize douporučuji se podívat na stockfish jde o jeden z nej šachových enginů a je opensource (https://github.com/…sh/Stockfish)

 
Odpovědět 20.6.2016 11:43
Avatar
Vasek Mares
Člen
Avatar
Vasek Mares:29.5.2018 19:32

Zdravím, povedlo se mi vyhodit krále. Hráno na nejlehčí obtížnost. Střelec měl v jedné diagonále dámu a krále no a AI obětovala raději krále :D tím že ustoupila s dámou.

 
Odpovědět  +2 29.5.2018 19:32
Avatar
Lukáš Fusek
Redaktor
Avatar
Odpovídá na Vasek Mares
Lukáš Fusek:19. března 6:03

Nahraná verze šachů je zastaralá. Pokud si přečteš popis aplikace, tak si můžeš všimnout, že popsané vlastnosti nesplňuje. Snažil jsem se nahrát aktuální verzi 2x, ale ani jednou mi editaci tohoto příspěvku neschválili. :-S Pokusím se to nahrát ještě jednou. Třeba mi to teď po 2 letech schválí. :D

Editováno 19. března 6:05
 
Odpovědět 19. března 6:03
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lukáš Fusek
David Čápka:19. března 10:15

A nedal jsi místo Publikovat jen Uložit jako rozepsaný? Nevzpomínám si, že bychom v redakci něco takového měli. Už to máš schválené.

Odpovědět 19. března 10:15
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Lukáš Fusek
Redaktor
Avatar
Odpovídá na David Čápka
Lukáš Fusek:20. března 22:41

To už si nevzpomínám. Asi bych se ani nedivil, kdybych to předtím někde spackal. Díky.

 
Odpovědět 20. března 22:41
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.

Zobrazeno 10 zpráv z 26. Zobrazit vše