From 1b64e31951e87355ed4655694da8dde40de30c73 Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Fri, 3 Jan 2025 21:01:39 +0100 Subject: [PATCH] =?UTF-8?q?StateManager=20Klasse=20erstellt=20f=C3=BCr=20R?= =?UTF-8?q?edo/=20Undo=20Logik?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PR2/HitoriSpiel/Domain/StateManager.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java new file mode 100644 index 0000000..2705a93 --- /dev/null +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/StateManager.java @@ -0,0 +1,37 @@ +package PR2.HitoriSpiel.Domain; + +import java.util.Stack; + +public class StateManager { + private final Stack undoStack = new Stack<>(); + private final Stack redoStack = new Stack<>(); + + public void saveState(int[][] state) { + undoStack.push(copyArray(state)); + redoStack.clear(); // Redo-Stack leeren, da ein neuer Zustand hinzugefügt wurde + } + + public int[][] undo(int[][] currentState) { + if (!undoStack.isEmpty()) { + redoStack.push(copyArray(currentState)); // Aktuellen Zustand im Redo-Stack speichern + return undoStack.pop(); + } + return null; // Kein Zustand zum Zurücksetzen + } + + public int[][] redo(int[][] currentState) { + if (!redoStack.isEmpty()) { + undoStack.push(copyArray(currentState)); // Aktuellen Zustand im Undo-Stack speichern + return redoStack.pop(); + } + return null; // Kein Zustand zum Wiederherstellen + } + + private int[][] copyArray(int[][] original) { + int[][] copy = new int[original.length][]; + for (int i = 0; i < original.length; i++) { + copy[i] = original[i].clone(); + } + return copy; + } +}