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(){ public void setPiecesSize8(){
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
board[i][1].setPiece(new Pawn(BLACK)); board[i][1].setPiece(new Pawn(BLACK, this, board[i][1]));
board[i][6].setPiece(new Pawn(WHITE)); board[i][6].setPiece(new Pawn(WHITE, this, board[i][6]));
if (i==0 || i==7) { if (i==0 || i==7) {
board[i][0].setPiece(new Rook(BLACK)); board[i][0].setPiece(new Rook(BLACK, this, board[i][0]));
board[i][7].setPiece(new Rook(WHITE)); board[i][7].setPiece(new Rook(WHITE, this, board[i][7]));
} }
if (i==1 || i==6) { if (i==1 || i==6) {
board[i][0].setPiece(new Knight(BLACK)); board[i][0].setPiece(new Knight(BLACK, this, board[i][0]));
board[i][7].setPiece(new Knight(WHITE)); board[i][7].setPiece(new Knight(WHITE, this, board[i][7]));
} }
if (i==2 || i==5) { if (i==2 || i==5) {
board[i][0].setPiece(new Bishop(BLACK)); board[i][0].setPiece(new Bishop(BLACK, this, board[i][0]));
board[i][7].setPiece(new Bishop(WHITE)); board[i][7].setPiece(new Bishop(WHITE, this, board[i][7]));
} }
if (i==3) { if (i==3) {
board[i][0].setPiece(new Queen(BLACK)); board[i][0].setPiece(new Queen(BLACK, this, board[i][0]));
board[i][7].setPiece(new Queen(WHITE)); board[i][7].setPiece(new Queen(WHITE, this, board[i][7]));
} }
if (i==4) { if (i==4) {
board[i][0].setPiece(new King(BLACK)); board[i][0].setPiece(new King(BLACK, this, board[i][0]));
board[i][7].setPiece(new King(WHITE)); board[i][7].setPiece(new King(WHITE, this, board[i][7]));
} }
} }
@@ -75,7 +75,11 @@ public class Board {
Cell arrivalCell = getCell(move.getEnd()); Cell arrivalCell = getCell(move.getEnd());
getCell(move.getStart()).deletePiece(); getCell(move.getStart()).deletePiece();
arrivalCell.setPiece(movingPiece); 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; import chess.view.render2D.Pieces;
public abstract class Piece { 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.color = color;
this.board = board;
this.position = position;
} }
public int getColor() { public int getColor() {
return color; return color;
} }
public void setPosition(Cell cell) {
this.position = cell;
}
public abstract void accept(PieceVisitor pv); 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; package chess.model.pieces;
import chess.model.Board;
import chess.model.Cell;
import chess.model.Piece; import chess.model.Piece;
import chess.model.PieceVisitor; import chess.model.PieceVisitor;
public class Bishop extends Piece { public class Bishop extends Piece {
public Bishop(final int color) { public Bishop(final int color, Board board, Cell cell) {
super(color); super(color, board, cell);
} }
@Override @Override

View File

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

View File

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

View File

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

View File

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

View File

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