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(){
|
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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user