V jazyce Java s využitím grafického uživatelského rozhraní (GUI) napište program pro hru šachů pro dva hráče.
Základní funkcionalita
hra dvou hráčů
člověk vs. člověk
příprava pro hru člověk vs. počítač (hru počítače lze demonstrovat např. náhodným generátorem platných tahů)
kompletní kontrola pravidel hry (střídání hráčů, tahy jednotlivých figur, rošáda, braní mimochodem - en passant, atd.)
možnost uložení a načtení rozehrané partie
možnost manuálního umístění figur před zahájením hry
šachové hodiny (využití vláken - bez použití Timeru nebo obdobné třídy s implementovaným časovačem). Správnou synchronizaci času si každý student musí naprogramovat pomocí vláken sám s vědomím toho, že “sleep(1000)” neznamená, že program púoběží opravdu za jednu sekundu!
Každý musí implementovat minimálně jednu z následujících vlastností/úkolů:
Při práci ve skupině se k základní funkcionalitě připojují následující požadavky:
Implementace šachového serveru, který je schopen hostit více paralelních her, uživatelů.
Server udržuje uživatelské účty a statistiku jejich her. Umí zobrazit globálních TOP10 her, které na serveru proběhly včetně časů a jmen účastníků.
Komunikace se serverem probíhá pomocí vlastního TCP nebo UDP protokolu, který musí být konzultován na prvním konzultačním termínu. Komunikace prostřednictvím REST není preferována a musí ji předem schválit cvičíci po domluvě se studenty při zachování srovnatelné obtížnosti.