diff --git a/src/schack/Pawn.java b/src/schack/Pawn.java index e62756c..b71a35b 100644 --- a/src/schack/Pawn.java +++ b/src/schack/Pawn.java @@ -75,7 +75,9 @@ public class Pawn extends PieceKnownIfMoved { Piece piece = pieces[pos.x][pos.y]; // Ifall det är tomt här, gör ingenting if (piece != null && piece.isWhite() != this.isWhite()) { - movable.addAll(tryToMoveAndCheckIfCheck(pieces, pos)); + if (!isInSchackHere(pieces, pos)) { + movable.add(pos); + } } return movable; } @@ -88,7 +90,9 @@ public class Pawn extends PieceKnownIfMoved { Piece pieceToCheck = pieces[pos.x][pos.y]; if (pieceToCheck == null) { - movable.addAll(tryToMoveAndCheckIfCheck(pieces, pos)); + if (!isInSchackHere(pieces, pos)) { + movable.add(pos); + } return false; } return true; diff --git a/src/schack/Piece.java b/src/schack/Piece.java index 342cf40..b98dae6 100644 --- a/src/schack/Piece.java +++ b/src/schack/Piece.java @@ -69,7 +69,8 @@ public abstract class Piece { * Ger tillbaks alla ställen pjäsen kan attackera * * @param pieces - * @param shouldNotCareIfAttackSpaceIsEmptyOrNot Ifall man inte ska bry sig ifall + * @param shouldNotCareIfAttackSpaceIsEmptyOrNot Ifall man inte ska bry sig + * ifall * @return */ public ArrayList validAttacks(Piece[][] pieces, boolean shouldNotCareIfAttackSpaceIsEmptyOrNot) { @@ -131,7 +132,9 @@ public abstract class Piece { if (!isSelected) { movable.add(pos); } else { - movable.addAll(tryToMoveAndCheckIfCheck(pieces, pos)); + if (!isInSchackHere(pieces, pos)) { + movable.add(pos); + } } // Fortsätt att gå return false; @@ -150,7 +153,9 @@ public abstract class Piece { if (!isSelected) { movable.add(pos); } else { - movable.addAll(tryToMoveAndCheckIfCheck(pieces, pos)); + if (!isInSchackHere(pieces, pos)) { + movable.add(pos); + } } } return true; @@ -165,8 +170,7 @@ public abstract class Piece { * @param pos * @return */ - ArrayList tryToMoveAndCheckIfCheck(Piece[][] pieces, Point pos) { - ArrayList movable = new ArrayList<>(); + boolean isInSchackHere(Piece[][] pieces, Point pos) { // Kom ihåg vart vi var Point previousPosition = new Point(this.position); @@ -185,10 +189,7 @@ public abstract class Piece { pieces[pos.x][pos.y] = opponentPiece; this.position = new Point(previousPosition); - if (!inSchack) { - movable.add(pos); - } - return movable; + return inSchack; } /**