Initial Commit
This commit is contained in:
24
main.py
24
main.py
@@ -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.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user