This commit is contained in:
Lukian LEIZOUR 2024-03-28 18:15:42 +01:00
parent 2f51df0d82
commit 42746ad5b0
6 changed files with 353 additions and 9 deletions

View file

@ -64,6 +64,8 @@ public class Grid extends JPanel {
if (solving) {
return;
}
this.universe.resetUniverse();
switch (this.universe.getGrid()[coord_i + 1][coord_j + 1]) {
case 0:
@ -203,6 +205,10 @@ public class Grid extends JPanel {
this.printUniverseGrid(this.universe.getGrid());
}
public void alert(String message) {
JOptionPane.showMessageDialog(this, message);
}
public void solve() {
this.universe.resetUniverse();
final Universe universe = this.universe;
@ -230,7 +236,7 @@ public class Grid extends JPanel {
int best_filled_boxes = 0;
int best_nb_mirrors = 0;
long lastPrinted = Instant.now().toEpochMilli();
long start = Instant.now().toEpochMilli();
do {
if (universe.canEvolve(currentState)) {
@ -241,10 +247,7 @@ public class Grid extends JPanel {
bestGrid = universe.copyGrid();
best_filled_boxes = universe.getFilledBoxes();
best_nb_mirrors = universe.getNbMirrors();
if (Instant.now().toEpochMilli() - lastPrinted > refreshRate) {
printUniverseGrid(bestGrid);
}
printUniverseGrid(bestGrid);
}
}
else if (stack.size() > 0) {
@ -256,8 +259,8 @@ public class Grid extends JPanel {
} while (stack.size() != 0 && solving == true);
solving = false;
Universe.print(bestGrid, width + 2, height + 2, 4, 4);
printUniverseGrid(bestGrid);
String message = "Solved in " + ((Instant.now().toEpochMilli() - start)/1000) + "s and " + ((Instant.now().toEpochMilli() - start)%1000) + "ms \nMirrors : " + best_nb_mirrors + "\nLaser length : " + best_filled_boxes;
alert(message);
}
});
computeThread.start();

View file

@ -109,8 +109,6 @@ public class Window extends JFrame {
toolsMenu.addSeparator();
toolsMenu.add(changeSize);
toolsMenu.addSeparator();
toolsMenu.add(solve);
toolsMenu.addSeparator();
toolsMenu.add(reset);
solveMenu.add(solve);
@ -167,6 +165,7 @@ public class Window extends JFrame {
this.universe.changeUniverseDim(universe_width + 2, universe_height + 2);
this.universe.changeUniverseStart(start_i, start_j, start_dir);
this.universe.resetUniverseObstacles();
while (true) {
try {