From 5016c1a888db46ea015107745fd7d3bd8a21ed25 Mon Sep 17 00:00:00 2001 From: Ninja-Jambon Date: Fri, 29 Mar 2024 11:20:32 +0100 Subject: [PATCH] commit --- userInterface/Grid.java | 22 +++++++++++++++++++--- userInterface/Window.java | 28 ++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/userInterface/Grid.java b/userInterface/Grid.java index a3ea9d5..1704e98 100644 --- a/userInterface/Grid.java +++ b/userInterface/Grid.java @@ -37,8 +37,9 @@ public class Grid extends JPanel { private int button_width, button_height; private int refreshRate; private boolean solving; + private int display; - public Grid(int width, int height, Universe universe, int refreshRate) { + public Grid(int width, int height, Universe universe, int refreshRate, int display) { super(new GridLayout(height, width)); this.width = width; this.height = height; @@ -48,6 +49,7 @@ public class Grid extends JPanel { this.button_height = button_width; this.refreshRate = refreshRate; this.solving = false; + this.display = display; this.mat = new JButton[height][width]; @@ -127,6 +129,10 @@ public class Grid extends JPanel { this.solving = solving; } + public void setDisplay(int display) { + this.display = display; + } + public void printUniverseGrid(int [][] universeGrid) { for (int i = 0; i < this.height; i++) { for (int j = 0; j < this.width; j ++) { @@ -245,10 +251,20 @@ public class Grid extends JPanel { stack.push(currentState.copy(universe.possibleChoices(currentState))); currentState = universe.evolve(currentState); + if (display == 1 && Instant.now().toEpochMilli() - lastRefresh > refreshRate) { + lastRefresh = Instant.now().toEpochMilli(); + printUniverseGrid(universe.getGrid()); + } + if ((universe.getFilledBoxes() > best_filled_boxes) || (universe.getFilledBoxes() == best_filled_boxes && universe.getNbMirrors() < best_nb_mirrors)) { this.bestGrid = universe.copyGrid(); best_filled_boxes = universe.getFilledBoxes(); best_nb_mirrors = universe.getNbMirrors(); + + if (display == 2 && Instant.now().toEpochMilli() - lastRefresh > refreshRate) { + lastRefresh = Instant.now().toEpochMilli(); + printUniverseGrid(this.bestGrid); + } } } else if (stack.size() > 0) { @@ -257,9 +273,9 @@ public class Grid extends JPanel { } else { break; } - if (Instant.now().toEpochMilli() - lastRefresh > refreshRate) { + if (display == 0 && Instant.now().toEpochMilli() - lastRefresh > refreshRate) { lastRefresh = Instant.now().toEpochMilli(); - printUniverseGrid(this.bestGrid); + printUniverseGrid(universe.getGrid()); } } while (stack.size() != 0 && solving == true); diff --git a/userInterface/Window.java b/userInterface/Window.java index b9c4576..b911b27 100644 --- a/userInterface/Window.java +++ b/userInterface/Window.java @@ -96,6 +96,10 @@ public class Window extends JFrame { refreshRates.add(radio200ms); refreshRates.add(radio500ms); refreshRates.add(radio1000ms); + + JMenuItem displayAll = new JMenuItem("Display progress and regress"); + JMenuItem displayProgress = new JMenuItem("Display only progress"); + JMenuItem displayBest = new JMenuItem("Display best grid"); fichierMenu.add(nouveauItem); fichierMenu.add(ouvrirItem); @@ -120,6 +124,10 @@ public class Window extends JFrame { refreshRate.add(radio1000ms); displayMenu.add(refreshRate); + displayMenu.addSeparator(); + displayMenu.add(displayAll); + displayMenu.add(displayProgress); + displayMenu.add(displayBest); menuBar.add(fichierMenu); menuBar.add(aideMenu); @@ -132,7 +140,7 @@ public class Window extends JFrame { this.universe.changeUniverseDim(5, 5); this.universe.resetUniverseObstacles(); this.panel.remove(this.grid); - this.grid = new Grid(3, 3, this.universe, 10); + this.grid = new Grid(3, 3, this.universe, 10, 0); this.panel.add(this.grid); super.pack(); super.repaint(); @@ -180,7 +188,7 @@ public class Window extends JFrame { } this.panel.remove(this.grid); - this.grid = new Grid(universe_width, universe_height, this.universe, 10); + this.grid = new Grid(universe_width, universe_height, this.universe, 10, 0); this.panel.add(this.grid); super.pack(); super.repaint(); @@ -198,7 +206,7 @@ public class Window extends JFrame { this.universe.changeUniverseDim(width + 2, height + 2); this.panel.remove(this.grid); - this.grid = new Grid(width, height, this.universe, 10); + this.grid = new Grid(width, height, this.universe, 10, 0); this.panel.add(this.grid); super.pack(); super.repaint(); @@ -235,8 +243,20 @@ public class Window extends JFrame { radio1000ms.addActionListener(e -> { this.grid.setRefreshRate(1000); }); + + displayAll.addActionListener(e -> { + this.grid.setDisplay(0); + }); + + displayProgress.addActionListener(e -> { + this.grid.setDisplay(1); + }); + + displayBest.addActionListener(e -> { + this.grid.setDisplay(2); + }); - this.grid = new Grid(this.universe.getHeight() - 2, this.universe.getWidth() - 2, this.universe, 10); + this.grid = new Grid(this.universe.getHeight() - 2, this.universe.getWidth() - 2, this.universe, 10, 0); this.panel.add(grid, BorderLayout.CENTER); super.setJMenuBar(menuBar);