Extended README & small code change
This commit is contained in:
parent
2a418fe0d9
commit
a3e558e55c
14
README.md
14
README.md
|
@ -9,3 +9,17 @@ Hra je naprogramována v programovacím jazyce Java za použití grafické kniho
|
|||
Š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.
|
||||
|
|
|
@ -125,8 +125,8 @@ public class Chessboard extends JPanel {
|
|||
for (IPiece[] pieces2: pieces) {
|
||||
for (IPiece piece : pieces2) {
|
||||
if(piece != null && piece != floating) {
|
||||
double xOffset = 20*pieceScale + SQUARE_SIZE *piece.getX();
|
||||
double yOffset = 20*pieceScale + SQUARE_SIZE *piece.getY();
|
||||
double xOffset = 20*pieceScale + SQUARE_SIZE*piece.getX();
|
||||
double yOffset = 20*pieceScale + SQUARE_SIZE*piece.getY();
|
||||
g2.translate(xOffset, yOffset);
|
||||
g2.scale(pieceScale, pieceScale);
|
||||
piece.paint(g2);
|
||||
|
|
Loading…
Reference in a new issue