diff --git a/src/schack/Bishop.java b/src/schack/Bishop.java index a023eae..5e2fdbd 100644 --- a/src/schack/Bishop.java +++ b/src/schack/Bishop.java @@ -53,6 +53,6 @@ public class Bishop extends Piece { @Override public String toString() { - return "Bishop{" + "position=" + position + ", isWhite=" + isWhite + '}'; + return "Bishop{" + "position=" + position + ", isWhite=" + white + '}'; } } diff --git a/src/schack/King.java b/src/schack/King.java index d7b8e13..fbdbef0 100644 --- a/src/schack/King.java +++ b/src/schack/King.java @@ -17,7 +17,7 @@ public final class King extends PieceKnownIfMoved { } private void addCastlingIfCan(Piece[][] pieces, LinkedHashSet movable, Point toMove, Point selected) { - if (hasMoved) { + if (moved) { return; } @@ -27,7 +27,20 @@ public final class King extends PieceKnownIfMoved { // Kolla ifall vi kollar tornet och inget är emellan if (loopX == 0 && nothingInBetween) { - movable.add(new Point(2, this.position.y)); + + // Check så att man bara kan göra rockad ifall tornet inte rört sig + Piece p = pieces[loopX][this.position.y]; + if (p != null) { + try { + PieceKnownIfMoved PKIM = (PieceKnownIfMoved) p; + if (!PKIM.moved) { + movable.add(new Point(2, this.position.y)); + } + } catch (Exception e) { + } + + } + } // Kolla ifall det är tomt emellan kung och torn @@ -100,7 +113,7 @@ public final class King extends PieceKnownIfMoved { @Override public String toString() { - return "Piece{" + "hasMoved=" + hasMoved + "position=" + position + ", isWhite=" + isWhite + '}'; + return "Piece{" + "hasMoved=" + moved + "position=" + position + ", isWhite=" + white + '}'; } } diff --git a/src/schack/Pawn.java b/src/schack/Pawn.java index a720249..b0480c4 100644 --- a/src/schack/Pawn.java +++ b/src/schack/Pawn.java @@ -17,13 +17,13 @@ public class Pawn extends PieceKnownIfMoved { LinkedHashSet movable = new LinkedHashSet<>(); // Om bonden har gått en gång, får gå 1 steg, annars 2 - final int upTo = hasMoved ? 1 : 2; + final int upTo = moved ? 1 : 2; // Kolla om man kan gå rakt frak for (int pawnDY = 1; pawnDY <= upTo; pawnDY++) { System.out.println("this.position.x: " + this.position.x); - System.out.println("calced y: " + (this.position.y + (this.isWhite ? -pawnDY : pawnDY))); - Point pos = new Point(this.position.x, this.position.y + (this.isWhite ? -pawnDY : pawnDY)); + System.out.println("calced y: " + (this.position.y + (this.white ? -pawnDY : pawnDY))); + Point pos = new Point(this.position.x, this.position.y + (this.white ? -pawnDY : pawnDY)); boolean shouldBreak = addMovesIfCan(pos, movable, pieces); if (shouldBreak) { System.out.println("should brkje!"); @@ -34,7 +34,7 @@ public class Pawn extends PieceKnownIfMoved { // Kolla ifall vi kan ta någon for (int pawnX : new int[]{-1, 1}) { // Position vi kollar just nu, snett upp åt höger & vänster - Point pos = new Point(this.position.x + pawnX, this.position.y + (this.isWhite ? -1 : 1)); + Point pos = new Point(this.position.x + pawnX, this.position.y + (this.white ? -1 : 1)); addAttackMovesIfCan(pos, movable, pieces); } System.out.println("len of movable: " + movable.size()); @@ -47,7 +47,7 @@ public class Pawn extends PieceKnownIfMoved { // Ifall det är en pjäs som står här och den inte är samma färg som oss, lägg till try { Piece p = pieces[pos.x][pos.y]; - if (p.isWhite != this.isWhite) { + if (p.white != this.white) { movable.add(pos); } } catch (Exception e) { @@ -91,6 +91,6 @@ public class Pawn extends PieceKnownIfMoved { @Override public String toString() { - return "Pawn{" + "position=" + position + ", isWhite=" + isWhite + '}'; + return "Pawn{" + "position=" + position + ", isWhite=" + white + '}'; } } diff --git a/src/schack/Piece.java b/src/schack/Piece.java index 3d3af3b..fd72d36 100644 --- a/src/schack/Piece.java +++ b/src/schack/Piece.java @@ -11,16 +11,16 @@ import javax.imageio.ImageIO; public abstract class Piece { public Point position; - public boolean isWhite; + public boolean white; protected BufferedImage icon; - public Piece(boolean isWhite, Point startingPosition) throws IOException { - this.isWhite = isWhite; + public Piece(boolean white, Point startingPosition) throws IOException { + this.white = white; this.position = startingPosition; } - public Piece(boolean isWhite) { - this.isWhite = isWhite; + public Piece(boolean white) { + this.white = white; } public void setPosition(Point p) { @@ -28,7 +28,7 @@ public abstract class Piece { } protected void setPieceIcon(String className) throws IOException { - String colorName = isWhite ? "White" : "Black"; + String colorName = white ? "White" : "Black"; String fileName = colorName + className + ".png"; InputStream is = getClass().getResourceAsStream("/img/" + fileName); icon = ImageIO.read(is); @@ -52,13 +52,12 @@ public abstract class Piece { pieces[toMove.x][toMove.y] = this; //new Rook(true,new Point(toMove)); pieces[selected.x][selected.y] = null; this.position = new Point(toMove); - } catch (Exception e) { } } - + protected boolean addMovesIfCan(Point pos, LinkedHashSet movable, Piece[][] pieces) { // Instead of checking index and null, try-catch try { @@ -68,7 +67,7 @@ public abstract class Piece { // Ifall pjäsen här har samma färg som oss, break // Ifall det inte är någon pjäs här kommer det att gå ner till // catch(NullPointerException) och då lägger vi till detta drag i listan - if (p.isWhite == this.isWhite) { + if (p.white == this.white) { return true; } else { // Detta betyder att det är en med motsatts pjäs här @@ -90,7 +89,11 @@ public abstract class Piece { @Override public String toString() { - return "Piece{" + "position=" + position + ", isWhite=" + isWhite + '}'; + return "Piece{" + "position=" + position + ", isWhite=" + white + '}'; + } + + public boolean isWhite() { + return white; } } diff --git a/src/schack/PieceKnownIfMoved.java b/src/schack/PieceKnownIfMoved.java index 6ee0718..702ae66 100644 --- a/src/schack/PieceKnownIfMoved.java +++ b/src/schack/PieceKnownIfMoved.java @@ -6,7 +6,7 @@ import java.util.ArrayList; public abstract class PieceKnownIfMoved extends Piece { - protected boolean hasMoved = false; + protected boolean moved = false; public PieceKnownIfMoved(boolean isWhite, Point startingPosition) throws IOException { super(isWhite, startingPosition); @@ -19,11 +19,11 @@ public abstract class PieceKnownIfMoved extends Piece { @Override public void move(Piece[][] pieces, Point toMove, Point selected) { super.move(pieces, toMove, selected); - hasMoved = true; + moved = true; } - public boolean hasMoved() { - return hasMoved; + public boolean isMoved() { + return moved; } } diff --git a/src/schack/Rook.java b/src/schack/Rook.java index 26df67a..b82603b 100644 --- a/src/schack/Rook.java +++ b/src/schack/Rook.java @@ -4,7 +4,7 @@ import java.awt.Point; import java.io.IOException; import java.util.LinkedHashSet; -public class Rook extends Piece { +public class Rook extends PieceKnownIfMoved { public Rook(boolean isWhite, Point startingPosition) throws IOException { super(isWhite, startingPosition);