rook funkar inte

This commit is contained in:
loveb 2022-03-15 15:21:38 +01:00
parent fa60ce0174
commit ed07eecccb
4 changed files with 112 additions and 27 deletions

View File

@ -18,7 +18,7 @@ public class Board extends JPanel implements MouseListener {
private Piece[][] pieces = new Piece[8][8];
private LinkedHashSet<Point> validMovesToDraw = new LinkedHashSet<>();
private Point selectedPiece = new Point();
private Color moveableColor = new Color(200, 200, 200);
private Color moveableColor = new Color(255, 191, 0);
public Board() throws IOException {
@ -193,7 +193,6 @@ public class Board extends JPanel implements MouseListener {
Piece p = pieces[mouseCoordinateX][mouseCoordinateY];
LinkedHashSet validMoves = p.validMoves(pieces);
System.out.println("valid moves " + validMoves);
moveableColor = new Color((int) (255 * Math.random()), (int) (255 * Math.random()), (int) (255 * Math.random()));
validMovesToDraw.addAll(validMoves);
System.out.println("valid moves to draw " + validMovesToDraw);

View File

@ -16,6 +16,4 @@ public class Horse extends Piece {
return new LinkedHashSet<>();
}
}

View File

@ -17,6 +17,8 @@ public class Pawn extends Piece {
@Override
public LinkedHashSet<Point> validMoves(Piece[][] pieces) {
LinkedHashSet<Point> movable = new LinkedHashSet<>();
return new LinkedHashSet<>();
}

View File

@ -2,6 +2,7 @@ package schack;
import java.awt.Point;
import java.io.IOException;
import java.util.HashSet;
import java.util.LinkedHashSet;
public class Rook extends Piece {
@ -12,41 +13,126 @@ public class Rook extends Piece {
}
@Override
public LinkedHashSet<Point> validMoves(Piece[][] pieces) {
public LinkedHashSet<Point> validMoves(Piece[][] pieces) {
LinkedHashSet<Point> movable = new LinkedHashSet<>();
//Behöver skriva att om rookX = this.position.x ska vi istället loopa igenom
//int rookY = 0-this.position.y; rookY < 8-this.position.Y; rookY++
//men jag är trög och har spenderat alldles förmycket tid att vara trög :^)
for (int rookX = 0-this.position.x; rookX < 8-this.position.x; rookX++) {
if (this.position.y == 0 && rookX == 0) {
continue;
}
Point pos = new Point(this.position.x + rookX, this.position.y);
// 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) {
continue;
}
movable.add(pos);
// Vänster
for (int rookX = this.position.x; rookX >= 0; rookX--) {
Point pos = new Point(this.position.x - rookX, this.position.y);
} catch (NullPointerException npe) {
// This is an empty spot
movable.add(pos);
} catch (Exception e) {
// This means that the player is at the edge
// 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
}
}
// Höger
for (int rookX = 1; rookX <= this.position.x + rookX; rookX++) {
Point pos = new Point(this.position.x + rookX, this.position.y);
// 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
}
}
// for (int rookY = 0 - this.position.y; rookY < 8 - this.position.y; rookY++) {
// if (this.position.y == 0 && rookY == 0) {
// continue;
// }
// Point pos = new Point(this.position.x, this.position.y + rookY);
//
// // 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) {
// continue;
// }
// movable.add(pos);
//
// } catch (NullPointerException npe) {
// // This is an empty spot
// movable.add(pos);
// } catch (Exception e) {
// // This means that the player is at the edge
// }
// }
//
// // En lista för att kolla alla vi har lagt till innan en pjäs av samma färg.
// HashSet<Point> toBeRemoved = new HashSet();
//
// for (int rookX = 0 - this.position.x; rookX < 8 - this.position.x; rookX++) {
//
// if (this.position.y == 0 && rookX == 0) {
// continue;
// }
// Point pos = new Point(this.position.x + rookX, this.position.y);
//
// // Instead of checking index and null, try-catch
// try {
// Piece p = pieces[pos.x][pos.y];
// System.out.println(p);
//
// // Funkar bara åt vänster
// if (pieces[pos.x + 1][pos.y] != null && pieces[pos.x + 1][pos.y] != this) {
// toBeRemoved.add(pos);
// }
//
// // If this piece is the same team as ours, skip
// if (p.isWhite == this.isWhite) {
// movable.removeAll(toBeRemoved);
// toBeRemoved.clear();
// continue;
// }
//// toBeRemoved.add(pos);
// movable.add(pos);
//
// } catch (NullPointerException npe) {
// // This is an empty spot
// movable.add(pos);
// } catch (Exception e) {
// // This means that the player is at the edge
// }
//
// }
System.out.println("Len of movable: " + movable.size());
return movable;
}
}