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 12:30:35 +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 Extended README & small code change 2023-03-26 12:30:35 +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 Extended README & small code change 2023-03-26 12:30:35 +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.

Přesouvání kamenů je umožněno pomocí kliknutí a přesunutí myší, které je řešeno třídou ChessboardMouseAdapter. Tato třída zaznamenává kliknutí myší, pohyb myši 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ích 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 jednotlivých tahů, aby si uživatelé mohli projít předchozí hry krok po kroku.

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