addition of decorator to manage pieces' moves
This commit is contained in:
17
app/src/main/java/chess/model/AccessibleCellsDecorator.java
Normal file
17
app/src/main/java/chess/model/AccessibleCellsDecorator.java
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
22
app/src/main/java/chess/model/decorators/LineDecorator.java
Normal file
22
app/src/main/java/chess/model/decorators/LineDecorator.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user