Program napsaný v Javě, který umožňuje dvěma hráčům u jednoho počítače hrát šachy s možností přepnout libovolného hráče na počítač. Vytvořeno jako semestrální práce na KIV/UPG.
Go to file
2023-03-26 18:14:19 +02:00
.idea Added chessboard & abstract piece 2023-03-07 14:59:15 +01:00
assets Added all pieces 2023-03-07 14:59:58 +01:00
src README update & small changes 2023-03-26 18:14:19 +02:00
.gitignore Added scripts 2023-03-21 13:59:45 +01:00
build.sh Added scripts 2023-03-21 13:59:45 +01:00
Chess.iml Added chessboard & abstract piece 2023-03-07 14:59:15 +01:00
makedocs.sh Added scripts 2023-03-21 13:59:45 +01:00
README.md README update & small changes 2023-03-26 18:14:19 +02:00
run.sh Added scripts 2023-03-21 13:59:45 +01:00

Šachy

Program umožňuje hrát šachy dvěma hráčům u jednoho počítače. V současné době je implementována pouze základní funkčnost, tedy vykreslení šachovnice, černých a bílých kamenů společně s možností přesunu kamenů na jiná libovolná políčka. V případě přesunutí kamenu na obsazené políčko se původní kámen odstraní.

Popis implementace

Hra je naprogramována v programovacím jazyce Java za použití grafické knihovny Swing pro vykreslování šachovnice a kamenů. Hlavní třídou je Chess, která vytváří a nastavuje okno programu a pokračuje s vytvořením šachovnice a jednotlivých kamenů.

Šachovnice je v programu reprezentována třídou Chessboard, která vykresluje jednotlivá políčka a uchovává dvourozměrné pole kamenů na ní umístěných. Kameny jsou tvořeny třídami, které dědí od abstraktní třídy AbstractPiece a implementují rozhraní IPiece.

Třída ChessboardMouseAdapter umožňuje přesouvat jednotlivé kameny na šachovnici kliknutím a tažením myši. Tato třída zaznamenává kliknutí tlačítka na myši, pohyb myší a uvolnění tlačítka, a na základě těchto událostí provádí přesun kamenů.

Omezení

Současná implementace má několik omezení, která je potřeba před finální verzí vyřešit. Aktuálně není kontrolováno, jestli daný hráč smí konkrétní přesun kamene provést, takže může hrát neplatné tahy i víckrát za sebou.

Kromě správnosti tahů nejsou implementována ani složitější pravidla hry, není tedy možné provést en passant (braní mimochodem), rošádu ani proměnu pěšce. Program nekontroluje ani to, zda je některý z hráčů v šachu či matu nebo nastala remíza. V tuto chvíli také není možné, aby hráč navrhl remízu nebo se vzdal.

Možná vylepšení

V budoucnu je možné kromě zmíněných omezení implementovat i další funkce, jako je například hra na čas či přesun jednotlivých kamenů kliknutím na původní a nové pole společně s grafickým znázorněním, kam je možné kámen přesunout.

V dalších verzích je také možné přidat ukládání všech odehraných her a tažení kamenů, aby si uživatelé mohli projít předchozí hry po jednotlivých tazích.

Přidána by mohla být i možnost uložení aktuálního stavu šachovnice do formátu SVG, PDF nebo PNG. Tato možnost by byla dostupná i u přehrávání již odehraných her.