coord: Changed to record type

This commit is contained in:
Nathan Woodburn 2023-05-02 14:45:05 +10:00
parent 3c343d002a
commit b4e3afb867
Signed by: nathanwoodburn
GPG Key ID: 203B000478AD0EF1

View File

@ -1,62 +1,46 @@
package comp1110.ass2; package comp1110.ass2;
import java.util.ArrayList;
/** /**
* Object to store coordinates * Object to store coordinates
* This stores the x and y coordinates of a point * This stores the x and y coordinates of a point
*/ */
public class Coord { public record Coord(int y, int x) {
private int x;
private int y;
/** /**
* Constructor for the Coord object * Constructor for the Coord object
*
* @param x x coordinate * @param x x coordinate
* @param y y coordinate * @param y y coordinate
*/ */
public Coord(int y, int x) { public Coord {
this.x = x;
this.y = y;
} }
// region Getters and Setters // region Getters and Setters
/** /**
* Get the x coordinate * Get the x coordinate
*
* @return int x coordinate * @return int x coordinate
*/ */
public int getX() { @Override
public int x() {
return x; return x;
} }
/** /**
* Get the y coordinate * Get the y coordinate
*
* @return int y coordinate * @return int y coordinate
*/ */
public int getY() { @Override
public int y() {
return y; return y;
} }
/**
* Set the x coordinate
* @param x int x coordinate
*/
public void setX(int x) {
this.x = x;
}
/**
* Set the y coordinate
* @param y int y coordinate
*/
public void setY(int y) {
this.y = y;
}
// endregion // endregion
/** /**
* Check if two coordinates are equal * Check if two coordinates are equal
*
* @param coord Coord object to compare to * @param coord Coord object to compare to
* @return boolean true if equal, false otherwise * @return boolean true if equal, false otherwise
*/ */
@ -66,6 +50,7 @@ public class Coord {
/** /**
* Check if two coordinates are adjacent (does not include diagonals) * Check if two coordinates are adjacent (does not include diagonals)
*
* @param coord Coord object to compare to * @param coord Coord object to compare to
*/ */
public boolean isAdjacent(Coord coord) { public boolean isAdjacent(Coord coord) {
@ -80,18 +65,54 @@ public class Coord {
/** /**
* Check if two coordinates are adjacent (includes diagonals) * Check if two coordinates are adjacent (includes diagonals)
*
* @param coord Coord object to compare to * @param coord Coord object to compare to
*/ */
public boolean isAdjacentDiagonal(Coord coord){ public boolean isAdjacentDiagonal(Coord coord) {
if (isAdjacent(coord)) return true; if (isAdjacent(coord)) return true;
if (this.x == coord.x - 1 && this.y == coord.y - 1) return true; if (this.x == coord.x - 1 && this.y == coord.y - 1) return true;
if (this.x == coord.x - 1 && this.y == coord.y + 1) return true; if (this.x == coord.x - 1 && this.y == coord.y + 1) return true;
if (this.x == coord.x + 1 && this.y == coord.y - 1) return true; if (this.x == coord.x + 1 && this.y == coord.y - 1) return true;
return (this.x == coord.x + 1 && this.y == coord.y + 1); return (this.x == coord.x + 1 && this.y == coord.y + 1);
} }
/**
* @param player Player to check owned by
* @return ArrayList of adjacent coordinates
*/
public Coord[] getClaimedAdjacent(Player player) {
Coord[] adjacent = new Coord[8];
adjacent[0] = new Coord(this.y, this.x + 1);
adjacent[1] = new Coord(this.y, this.x - 1);
adjacent[2] = new Coord(this.y + 1, this.x);
adjacent[3] = new Coord(this.y - 1, this.x);
adjacent[4] = new Coord(this.y + 1, this.x + 1);
adjacent[5] = new Coord(this.y + 1, this.x - 1);
adjacent[6] = new Coord(this.y - 1, this.x + 1);
adjacent[7] = new Coord(this.y - 1, this.x - 1);
Coord[] adjacentOwned = new Coord[8];
int ownedCount = 0;
for (Coord c : player.getPieces()) {
for (int i = 0; i < adjacent.length; i++) {
if (c.equals(adjacent[i])) {
adjacentOwned[i] = c;
ownedCount++;
}
}
}
Coord[] owned = new Coord[ownedCount];
for (int i = 0; i < ownedCount; i++) {
owned[i] = adjacentOwned[i];
}
return adjacentOwned;
}
/** /**
* Get a string representation of the coordinate (y,x) * Get a string representation of the coordinate (y,x)
*
* @return String representation of the coordinate * @return String representation of the coordinate
*/ */
@Override @Override