diff --git a/CS3642-Artificial_Intelligence.iml b/CS3642-Artificial_Intelligence.iml
index c90834f..8e1b626 100644
--- a/CS3642-Artificial_Intelligence.iml
+++ b/CS3642-Artificial_Intelligence.iml
@@ -7,5 +7,6 @@
+
\ No newline at end of file
diff --git a/src/Assignments/A1/managers/PuzzleGenerator.java b/src/Assignments/A1/managers/BoardGenerator.java
similarity index 53%
rename from src/Assignments/A1/managers/PuzzleGenerator.java
rename to src/Assignments/A1/managers/BoardGenerator.java
index 6624f4a..8d9c8d7 100644
--- a/src/Assignments/A1/managers/PuzzleGenerator.java
+++ b/src/Assignments/A1/managers/BoardGenerator.java
@@ -1,4 +1,5 @@
package Assignments.A1.managers;
-public class PuzzleGenerator {
+public class BoardGenerator {
+
}
diff --git a/src/Assignments/A1/models/EightPuzzle.java b/src/Assignments/A1/models/EightPuzzle.java
index 92feb55..fb0b27a 100644
--- a/src/Assignments/A1/models/EightPuzzle.java
+++ b/src/Assignments/A1/models/EightPuzzle.java
@@ -1,4 +1,11 @@
package Assignments.A1.models;
+/**
+ * @author Jonathan Turner
+ * @version Spring 2024
+ */
public class EightPuzzle {
+
+
+
}
diff --git a/src/Assignments/A1/models/Piece.java b/src/Assignments/A1/models/Piece.java
index 2932c1d..999702b 100644
--- a/src/Assignments/A1/models/Piece.java
+++ b/src/Assignments/A1/models/Piece.java
@@ -26,7 +26,7 @@ public class Piece {
throw new IllegalArgumentException("The piece value is not valid. Valid Range: 1 <= Value <= 8");
}
- this.moveTo(loc);
+ this.setLoc(loc);
this.value = value;
}
@@ -39,10 +39,10 @@ public class Piece {
* @param newLoc the new location of the piece.
*/
public void moveTo(int newLoc) {
- if (newLoc < 0 || newLoc > 8) {
- throw new IllegalArgumentException("The new location is not valid. Valid Range: 0 <= Location <= 8.");
+ if (newLoc == this.loc) {
+ throw new IllegalArgumentException("The new location cannot be the same as the old location.");
}
- this.loc = newLoc;
+ this.setLoc(newLoc);
}
/**
@@ -68,4 +68,45 @@ public class Piece {
public int getValue() {
return this.value;
}
+
+ /**
+ * Checks if the move to a location is valid.
+ *
+ * @precondition none
+ * @postcondition none
+ *
+ * @param desiredLoc the location being checked if move is valid.
+ * @param board the current board layout.
+ * @return if the move is valid, True
+ * else, False
+ */
+ public boolean validMove(int desiredLoc, Board board) {
+ if (desiredLoc != this.loc) {
+ return false;
+ }
+ if (this.invalidLocation(desiredLoc)) {
+ return false;
+ }
+ // Checks if the desiredLoc is above, to the left/right, or below.
+ if (desiredLoc != this.loc-3 && desiredLoc != this.loc-1
+ && desiredLoc != this.loc+1 && desiredLoc == this.loc+3) {
+ return false;
+ }
+ return board.isTaken(desiredLoc);
+ }
+
+ /* Private Methods Below. End of Java Docs. */
+
+ /* Sets the location for both Moving and Initialization. */
+ private void setLoc(int loc) {
+ if (this.invalidLocation(loc)) {
+ throw new IllegalArgumentException("The new location is not valid. Valid Range: 0 <= Location <= 8.");
+ }
+ this.loc = loc;
+ }
+
+ /* Checks if a given location is a valid location. */
+ private boolean invalidLocation(int loc) {
+ return (loc >= 0 && loc <= 8);
+ }
}