Initial Commit

This commit is contained in:
klein panic
2024-10-23 19:14:35 -04:00
parent aeaa436c25
commit 3d1833d424
2936 changed files with 199 additions and 621114 deletions

24
main.py
View File

@@ -19,6 +19,7 @@ class MazeSolverApp:
self.maze = None
self.solving = False
self.autogenerated_seed = None # Track the last autogenerated seed
self.stop_requested = False # Add this flag for stopping the solver
# Bind keys to quit the application
self.root.bind('<Escape>', self.quit_application)
@@ -66,11 +67,11 @@ class MazeSolverApp:
# Get additional parameters from the new sliders
dead_ends = int(self.render.dead_ends_scale.get())
branching_factor = int(self.render.branching_factor_scale.get())
connectedness = int(self.render.connectedness_scale.get()) * 10
# Generate maze in a separate thread to avoid freezing the UI
threading.Thread(target=self._generate_maze_thread, args=(params, dead_ends, branching_factor)).start()
threading.Thread(target=self._generate_maze_thread, args=(params, dead_ends, branching_factor, connectedness)).start()
def _generate_maze_thread(self, params, dead_ends, branching_factor):
def _generate_maze_thread(self, params, dead_ends, branching_factor, connectedness):
try:
# Check if the seed input is empty or if it's the autogenerated seed
seed_input = params['seed']
@@ -82,6 +83,7 @@ class MazeSolverApp:
# Get the values from the new sliders
dead_ends = int(self.render.dead_ends_scale.get())
branching_factor = int(self.render.branching_factor_scale.get())
connectedness = int(self.render.connectedness_scale.get()) * 10 # Convert to percentage
# Call generate_maze with the seed
maze, used_seed = generate_maze(
@@ -90,8 +92,9 @@ class MazeSolverApp:
generation_algorithm=params['generation_algorithm'],
seed=seed,
wall_density=params['wall_density'],
dead_ends=dead_ends, # Pass the dead ends parameter
branching_factor=branching_factor # Pass the branching factor parameter
dead_ends=dead_ends,
branching_factor=branching_factor,
connectedness=connectedness
)
self.maze = maze
@@ -122,6 +125,7 @@ class MazeSolverApp:
return
self.solving = True
self.stop_requested = False # Reset the flag when starting
self.reset_timer()
self.start_time = time.time()
self.start_timer()
@@ -147,6 +151,11 @@ class MazeSolverApp:
self.root.after(0, self._process_solver_step)
def _process_solver_step(self):
if self.stop_requested:
self.solving = False
self.stop_timer()
print("Solver stopped by user.")
return
try:
action, cell, steps = next(self.solver_generator)
self.steps = steps
@@ -187,9 +196,8 @@ class MazeSolverApp:
def stop_solving(self):
if self.solving:
# Currently, our solving algorithms are not interruptible.
# Implementing a stoppable solving process would require more complex threading control.
messagebox.showinfo("Stop Solving", "Stopping the solver is not implemented yet.")
self.stop_requested = True # Set the flag to stop the solver
messagebox.showinfo("Stop Solving", "Maze Solver Should be stopped")
else:
messagebox.showinfo("Not Solving", "No solving process is currently running.")