diff --git a/src/schack/Bishop.java b/src/schack/Bishop.java index 4b6d5a7..eccabc7 100644 --- a/src/schack/Bishop.java +++ b/src/schack/Bishop.java @@ -15,47 +15,111 @@ public class Bishop extends Piece { @Override public LinkedHashSet validMoves(Piece[][] pieces) { - LinkedHashSet unmovable = new LinkedHashSet<>(); - LinkedHashSet perhapsMovable = new LinkedHashSet<>(); + LinkedHashSet movable = new LinkedHashSet<>(); -// // Ner höger -// for (int x = 0, y = 0; x < 8 && x > -8; x++, y++) { -// System.out.println("x: " + x + ", y: " + y); -// } -// // Upp höger -// for (int x = 0, y = 0; x < 8 && x > -8; x++, y--) { -// System.out.println("x: " + x + ", y: " + y); -// } -// // Ner vänster -// for (int x = 0, y = 0; x < 8 && x > -8; x--, y--) { -// System.out.println("x: " + x + ", y: " + y); -// } -// // Upp vänster -// for (int x = 0, y = 0; x < 8 && x > -8; x--, y++) { -// System.out.println("x: " + x + ", y: " + y); -// } - return new LinkedHashSet<>(); - } + // Upp vänster + for (int bishopX = this.position.x - 1, bishopY = this.position.y - 1; bishopX >= 0 && bishopY >= 0; bishopX--, bishopY--) { + + Point pos = new Point(bishopX, bishopY); + + // Instead of checking index and null, try-catch + try { + Piece p = pieces[pos.x][pos.y]; + System.out.println(p); + // If this piece is the same team as ours, skip + if (p.isWhite == this.isWhite) { + break; + } + + movable.add(pos); + break; + + } catch (NullPointerException npe) { + // This is an empty spot + movable.add(pos); + } catch (Exception e) { + // This means that the player is at the edge + } - public static void main(String[] args) { - // Ner höger - for (int x = 0, y = 0; x < 8 && x > -8; x++, y++) { - System.out.println("x: " + x + ", y: " + y); } - // Upp höger - for (int x = 0, y = 0; x < 8 && x > -8; x++, y--) { - System.out.println("x: " + x + ", y: " + y); + + // Upp höger + for (int bishopX = this.position.x + 1, bishopY = this.position.y - 1; bishopX <= 7 && bishopY >= 0; bishopX++, bishopY--) { + + Point pos = new Point(bishopX, bishopY); + + // Instead of checking index and null, try-catch + try { + Piece p = pieces[pos.x][pos.y]; + System.out.println(p); + // If this piece is the same team as ours, skip + if (p.isWhite == this.isWhite) { + break; + } + + movable.add(pos); + break; + + } catch (NullPointerException npe) { + // This is an empty spot + movable.add(pos); + } catch (Exception e) { + // This means that the player is at the edge + } + + } + // Ner höger + for (int bishopX = this.position.x + 1, bishopY = this.position.y + 1; bishopX <= 7 && bishopY <= 7; bishopX++, bishopY++) { + + Point pos = new Point(bishopX, bishopY); + + // Instead of checking index and null, try-catch + try { + Piece p = pieces[pos.x][pos.y]; + System.out.println(p); + // If this piece is the same team as ours, skip + if (p.isWhite == this.isWhite) { + break; + } + + movable.add(pos); + break; + + } catch (NullPointerException npe) { + // This is an empty spot + movable.add(pos); + } catch (Exception e) { + // This means that the player is at the edge + } + } // Ner vänster - for (int x = 0, y = 0; x < 8 && x > -8; x--, y--) { - System.out.println("x: " + x + ", y: " + y); - } - // Upp vänster - for (int x = 0, y = 0; x < 8 && x > -8; x--, y++) { - System.out.println("x: " + x + ", y: " + y); - } - } + for (int bishopX = this.position.x - 1, bishopY = this.position.y + 1; bishopX >= 0 && bishopY <= 7; bishopX--, bishopY++) { + Point pos = new Point(bishopX, bishopY); + + // Instead of checking index and null, try-catch + try { + Piece p = pieces[pos.x][pos.y]; + System.out.println(p); + // If this piece is the same team as ours, skip + if (p.isWhite == this.isWhite) { + break; + } + + movable.add(pos); + break; + + } catch (NullPointerException npe) { + // This is an empty spot + movable.add(pos); + } catch (Exception e) { + // This means that the player is at the edge + } + + } + return movable; + } @Override public String toString() { diff --git a/src/schack/Board.java b/src/schack/Board.java index 59e6ca1..a2d98fe 100644 --- a/src/schack/Board.java +++ b/src/schack/Board.java @@ -33,7 +33,7 @@ public class Board extends JPanel implements MouseListener { {new Rook(false, new Point(0, 0)), null, null, null, null, null, null, new Rook(true, new Point(0, 7))}, {new Horse(false, true, new Point(1, 0)), null, null, null, null, null, null, new Horse(true, true, new Point(1, 7))}, {new Bishop(false, new Point(2, 0)), null, null, null, null, null, null, new Bishop(true, new Point(2, 7))}, - {new Queen(false, new Point(3, 0)), null, null, null, new Rook(false, new Point(3, 4)), null, null, new Queen(true, new Point(3, 7))}, + {new Queen(false, new Point(3, 0)), null, null, null, new Bishop(false, new Point(3, 4)), null, null, new Queen(true, new Point(3, 7))}, {new King(false), null, null, null, null, null, null, new King(true)}, {null, null, null, null, null, null, null, new King(false, new Point(5, 7))}, {null, null, null, null, null, null, null, null},