From e1fe63cf89ed57e19153176d8e3fce6697d8031f Mon Sep 17 00:00:00 2001 From: Didictateur Date: Thu, 16 Oct 2025 08:32:45 +0200 Subject: [PATCH] added movements to the pieces --- README.md | 6 ++++-- engine/core/board.js | 50 ++++++++++++++++++++++++++++---------------- engine/core/piece.js | 7 ++++++- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 964e9af..8cb064c 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ La position de toutes les pièces sont échangées aléatoirement. ### La parrure Une reine est dégradée en pion ### Tricherie -Regarde les trois prochaines cartes de la pioche +Regarde les trois prochaines cartes de la pioche. ### Tout ou rien -Une pièce choisie ne peut maintenant se déplacer que si elle capture \ No newline at end of file +Une pièce choisie ne peut maintenant se déplacer que si elle capture. +### Tous les mêmes +Au yeux de l'ennemie, toutes les pièces se ressemblent pendant 2 tours. \ No newline at end of file diff --git a/engine/core/board.js b/engine/core/board.js index c714d80..9799943 100644 --- a/engine/core/board.js +++ b/engine/core/board.js @@ -1,5 +1,19 @@ import Cell from './cell.js'; +import * as Movement from './movement/index.js'; +import Piece, { PieceColor, PieceType } from './piece.js'; +export default { + Cell, + Movement, + Piece, + PieceColor, + PieceType, + Board +}; + +/** + * Represents the game board. + */ class Board { /** * @param {number} width @@ -51,32 +65,32 @@ class Board { setupInitialPieces() { // Pawns for (let x = 0; x < this.width; x++) { - this.setPiece(x, 1, new Piece(PieceColor.WHITE, PieceType.PAWN)); - this.setPiece(x, 6, new Piece(PieceColor.BLACK, PieceType.PAWN)); + this.setPiece(x, 1, new Piece(PieceColor.WHITE, PieceType.PAWN, [Movement.PawnMove])); + this.setPiece(x, 6, new Piece(PieceColor.BLACK, PieceType.PAWN, [Movement.PawnMove])); } // Rooks - this.setPiece(0, 0, new Piece(PieceColor.WHITE, PieceType.ROOK)); - this.setPiece(7, 0, new Piece(PieceColor.WHITE, PieceType.ROOK)); - this.setPiece(0, 7, new Piece(PieceColor.BLACK, PieceType.ROOK)); - this.setPiece(7, 7, new Piece(PieceColor.BLACK, PieceType.ROOK)); + this.setPiece(0, 0, new Piece(PieceColor.WHITE, PieceType.ROOK, [Movement.RookMove])); + this.setPiece(7, 0, new Piece(PieceColor.WHITE, PieceType.ROOK, [Movement.RookMove])); + this.setPiece(0, 7, new Piece(PieceColor.BLACK, PieceType.ROOK, [Movement.RookMove])); + this.setPiece(7, 7, new Piece(PieceColor.BLACK, PieceType.ROOK, [Movement.RookMove])); // Knights - this.setPiece(1, 0, new Piece(PieceColor.WHITE, PieceType.KNIGHT)); - this.setPiece(6, 0, new Piece(PieceColor.WHITE, PieceType.KNIGHT)); - this.setPiece(1, 7, new Piece(PieceColor.BLACK, PieceType.KNIGHT)); - this.setPiece(6, 7, new Piece(PieceColor.BLACK, PieceType.KNIGHT)); + this.setPiece(1, 0, new Piece(PieceColor.WHITE, PieceType.KNIGHT, [Movement.KnightMove])); + this.setPiece(6, 0, new Piece(PieceColor.WHITE, PieceType.KNIGHT, [Movement.KnightMove])); + this.setPiece(1, 7, new Piece(PieceColor.BLACK, PieceType.KNIGHT, [Movement.KnightMove])); + this.setPiece(6, 7, new Piece(PieceColor.BLACK, PieceType.KNIGHT, [Movement.KnightMove])); // Bishops - this.setPiece(2, 0, new Piece(PieceColor.WHITE, PieceType.BISHOP)); - this.setPiece(5, 0, new Piece(PieceColor.WHITE, PieceType.BISHOP)); - this.setPiece(2, 7, new Piece(PieceColor.BLACK, PieceType.BISHOP)); - this.setPiece(5, 7, new Piece(PieceColor.BLACK, PieceType.BISHOP)); + this.setPiece(2, 0, new Piece(PieceColor.WHITE, PieceType.BISHOP, [Movement.BishopMove])); + this.setPiece(5, 0, new Piece(PieceColor.WHITE, PieceType.BISHOP, [Movement.BishopMove])); + this.setPiece(2, 7, new Piece(PieceColor.BLACK, PieceType.BISHOP, [Movement.BishopMove])); + this.setPiece(5, 7, new Piece(PieceColor.BLACK, PieceType.BISHOP, [Movement.BishopMove])); // Queens and Kings - this.setPiece(3, 0, new Piece(PieceColor.WHITE, PieceType.QUEEN)); - this.setPiece(4, 0, new Piece(PieceColor.WHITE, PieceType.KING)); - this.setPiece(3, 7, new Piece(PieceColor.BLACK, PieceType.QUEEN)); - this.setPiece(4, 7, new Piece(PieceColor.BLACK, PieceType.KING)); + this.setPiece(3, 0, new Piece(PieceColor.WHITE, PieceType.QUEEN, [Movement.QueenMove])); + this.setPiece(4, 0, new Piece(PieceColor.WHITE, PieceType.KING, [Movement.KingMove])); + this.setPiece(3, 7, new Piece(PieceColor.BLACK, PieceType.QUEEN, [Movement.QueenMove])); + this.setPiece(4, 7, new Piece(PieceColor.BLACK, PieceType.KING, [Movement.KingMove])); } } \ No newline at end of file diff --git a/engine/core/piece.js b/engine/core/piece.js index a91329b..b583f31 100644 --- a/engine/core/piece.js +++ b/engine/core/piece.js @@ -16,14 +16,19 @@ class Piece { /** * @param {PieceColor} color * @param {PieceType} type + * @param {Array} movements */ - constructor(color, type) { + constructor(color, type, movements) { /** @type {PieceColor} */ this.color = color; /** @type {PieceType} */ this.type = type; /** @type {boolean} */ this.hasMoved = false; + /** @type {Array} */ + this.movements = movements; + /** @type {Array} */ + this.priorityMovements = []; } /**