diff --git a/src/schack/Board.java b/src/schack/Board.java index 5182e01..c63daec 100644 --- a/src/schack/Board.java +++ b/src/schack/Board.java @@ -228,7 +228,7 @@ public class Board extends JPanel implements MouseListener { continue; } // Lägg till alla attacker för respektive färg - attacks.addAll(piece.validAttacks(pieces)); + attacks.addAll(piece.validAttacks(pieces, true)); } } diff --git a/src/schack/Pawn.java b/src/schack/Pawn.java index e9198b2..66f107f 100644 --- a/src/schack/Pawn.java +++ b/src/schack/Pawn.java @@ -11,7 +11,7 @@ public class Pawn extends PieceKnownIfMoved { } @Override - public ArrayList validAttacks(Piece[][] pieces) { + public ArrayList validAttacks(Piece[][] pieces, boolean shouldNotCareIfAttackSpaceIsEmptyOrNot) { ArrayList movable = new ArrayList<>(); // Kolla ifall vi kan ta någon @@ -22,7 +22,8 @@ public class Pawn extends PieceKnownIfMoved { continue; } Piece piece = pieces[pos.x][pos.y]; - if (piece == null || piece.isWhite() != piece.isWhite()) { + if (piece == null || piece.isWhite() != this.isWhite() + || (shouldNotCareIfAttackSpaceIsEmptyOrNot && piece.isWhite() != this.isWhite())) { movable.add(pos); } } diff --git a/src/schack/Piece.java b/src/schack/Piece.java index d1d8dab..342cf40 100644 --- a/src/schack/Piece.java +++ b/src/schack/Piece.java @@ -69,9 +69,10 @@ public abstract class Piece { * Ger tillbaks alla ställen pjäsen kan attackera * * @param pieces + * @param shouldNotCareIfAttackSpaceIsEmptyOrNot Ifall man inte ska bry sig ifall * @return */ - public ArrayList validAttacks(Piece[][] pieces) { + public ArrayList validAttacks(Piece[][] pieces, boolean shouldNotCareIfAttackSpaceIsEmptyOrNot) { return validMoves(pieces, false); } @@ -110,6 +111,7 @@ public abstract class Piece { /** * Lägg till move ifall det går, alltså inte är schack där + * * @param pos drag att lägga till ifall det går * @param movable lägger till drag i denna ArrayList * @param pieces Piece[][] över brädet @@ -204,7 +206,7 @@ public abstract class Piece { for (Piece piece : pieceArr) { if (piece != null && piece.isWhite != this.isWhite()) { // Lägg till alla attacker för mostståndaren - enemyAttacks.addAll(piece.validAttacks(pieces)); + enemyAttacks.addAll(piece.validAttacks(pieces, false)); } } } @@ -226,7 +228,7 @@ public abstract class Piece { } /** - * + * * @return true ifall pjäsen är vit */ public boolean isWhite() {