addition of decorator to manage pieces' moves

This commit is contained in:
Janet-Doe
2025-03-31 12:02:23 +02:00
parent 747bc62596
commit f4b5e10e5b
11 changed files with 117 additions and 31 deletions

View File

@@ -0,0 +1,17 @@
package chess.model;
import java.util.ArrayList;
public abstract class AccessibleCellsDecorator {
public AccessibleCellsDecorator base;
public ArrayList<Cell> cells;
protected abstract ArrayList<Cell> getAccessibleCells();
public AccessibleCellsDecorator(AccessibleCellsDecorator base) {
this.base = base;
}
public AccessibleCellsDecorator() {
this(null);
}
}

View File

@@ -40,27 +40,27 @@ public class Board {
public void setPiecesSize8(){
for (int i = 0; i < 8; i++) {
board[i][1].setPiece(new Pawn(BLACK));
board[i][6].setPiece(new Pawn(WHITE));
board[i][1].setPiece(new Pawn(BLACK, this, board[i][1]));
board[i][6].setPiece(new Pawn(WHITE, this, board[i][6]));
if (i==0 || i==7) {
board[i][0].setPiece(new Rook(BLACK));
board[i][7].setPiece(new Rook(WHITE));
board[i][0].setPiece(new Rook(BLACK, this, board[i][0]));
board[i][7].setPiece(new Rook(WHITE, this, board[i][7]));
}
if (i==1 || i==6) {
board[i][0].setPiece(new Knight(BLACK));
board[i][7].setPiece(new Knight(WHITE));
board[i][0].setPiece(new Knight(BLACK, this, board[i][0]));
board[i][7].setPiece(new Knight(WHITE, this, board[i][7]));
}
if (i==2 || i==5) {
board[i][0].setPiece(new Bishop(BLACK));
board[i][7].setPiece(new Bishop(WHITE));
board[i][0].setPiece(new Bishop(BLACK, this, board[i][0]));
board[i][7].setPiece(new Bishop(WHITE, this, board[i][7]));
}
if (i==3) {
board[i][0].setPiece(new Queen(BLACK));
board[i][7].setPiece(new Queen(WHITE));
board[i][0].setPiece(new Queen(BLACK, this, board[i][0]));
board[i][7].setPiece(new Queen(WHITE, this, board[i][7]));
}
if (i==4) {
board[i][0].setPiece(new King(BLACK));
board[i][7].setPiece(new King(WHITE));
board[i][0].setPiece(new King(BLACK, this, board[i][0]));
board[i][7].setPiece(new King(WHITE, this, board[i][7]));
}
}
@@ -75,7 +75,11 @@ public class Board {
Cell arrivalCell = getCell(move.getEnd());
getCell(move.getStart()).deletePiece();
arrivalCell.setPiece(movingPiece);
movingPiece.setPosition(arrivalCell);
}
public Cell getRelativePosition(Coordinates coordinates, MovePattern mp){
// todo
}
// je fais mumuse
}

View File

@@ -3,18 +3,25 @@ package chess.model;
import chess.view.render2D.Pieces;
public abstract class Piece {
public int color;
public final int color;
public AccessibleCellsDecorator decorator;
public final Board board;
public Cell position;
public Piece(int color) {
public Piece(int color, Board board, Cell position) {
this.color = color;
this.board = board;
this.position = position;
}
public int getColor() {
return color;
}
public void setPosition(Cell cell) {
this.position = cell;
}
public abstract void accept(PieceVisitor pv);
// public abstract void allowedMove();
}

View File

@@ -0,0 +1,21 @@
package chess.model.decorators;
import chess.model.AccessibleCellsDecorator;
import chess.model.Cell;
import java.util.ArrayList;
public class DiagonalDecorator extends AccessibleCellsDecorator {
public DiagonalDecorator(AccessibleCellsDecorator base) {
super(base);
}
public DiagonalDecorator(){
super();
}
@Override
protected ArrayList<Cell> getAccessibleCells() {
return null;
}
}

View File

@@ -0,0 +1,22 @@
package chess.model.decorators;
import chess.model.AccessibleCellsDecorator;
import chess.model.Cell;
import java.util.ArrayList;
public class LineDecorator extends AccessibleCellsDecorator {
public LineDecorator(AccessibleCellsDecorator base) {
super(base);
}
public LineDecorator(){
super();
}
@Override
protected ArrayList<Cell> getAccessibleCells() {
return null;
}
}

View File

@@ -1,11 +1,13 @@
package chess.model.pieces;
import chess.model.Board;
import chess.model.Cell;
import chess.model.Piece;
import chess.model.PieceVisitor;
public class Bishop extends Piece {
public Bishop(final int color) {
super(color);
public Bishop(final int color, Board board, Cell cell) {
super(color, board, cell);
}
@Override

View File

@@ -1,11 +1,13 @@
package chess.model.pieces;
import chess.model.Board;
import chess.model.Cell;
import chess.model.Piece;
import chess.model.PieceVisitor;
public class King extends Piece {
public King(final int color) {
super(color);
public King(final int color, Board board, Cell cell) {
super(color, board, cell);
}
@Override

View File

@@ -1,11 +1,13 @@
package chess.model.pieces;
import chess.model.Board;
import chess.model.Cell;
import chess.model.Piece;
import chess.model.PieceVisitor;
public class Knight extends Piece {
public Knight(final int color) {
super(color);
public Knight(final int color, Board board, Cell cell) {
super(color, board, cell);
}
@Override

View File

@@ -1,11 +1,13 @@
package chess.model.pieces;
import chess.model.Board;
import chess.model.Cell;
import chess.model.Piece;
import chess.model.PieceVisitor;
public class Pawn extends Piece {
public Pawn(final int color) {
super(color);
public Pawn(final int color, Board board, Cell cell) {
super(color, board, cell);
}
@Override

View File

@@ -1,11 +1,12 @@
package chess.model.pieces;
import chess.model.Piece;
import chess.model.PieceVisitor;
import chess.model.*;
import chess.model.decorators.DiagonalDecorator;
import chess.model.decorators.LineDecorator;
public class Queen extends Piece {
public Queen(final int color) {
super(color);
public Queen(final int color, Board board, Cell cell) {
super(color, board, cell);
}
@Override

View File

@@ -1,11 +1,17 @@
package chess.model.pieces;
import chess.model.Board;
import chess.model.Cell;
import chess.model.Piece;
import chess.model.PieceVisitor;
import chess.model.decorators.DiagonalDecorator;
import chess.model.decorators.LineDecorator;
public class Rook extends Piece {
public Rook(final int color) {
super(color);
public Rook(final int color, Board board, Cell cell) {
super(color, board, cell);
this.decorator = new LineDecorator();
// todo
}
@Override