4 Commits

Author SHA1 Message Date
Maoake Teriierooiterai 68d710e313 color 42 2026-03-29 18:47:29 +02:00
Maoake Teriierooiterai b682274102 opti path 2026-03-29 14:31:04 +02:00
mteriier d534993f4c starting my branch need to rush this 2026-03-28 23:01:42 +01:00
da7e b317f7a3a0 FIX(path render): path render was called twice 2026-03-27 21:42:14 +01:00
3 changed files with 50 additions and 11 deletions
+38 -6
View File
@@ -1,4 +1,4 @@
from typing import Any, Generator
from typing import Any
from src.AMazeIng import AMazeIng
from src.parsing import Parsing
from mlx import Mlx
@@ -116,6 +116,7 @@ class MazeMLX:
)
)
self.update_maze(maze)
self.color_ft(maze)
for i in range(len(path)):
ul = (
(actual[0]) * cell_size + margin + 12,
@@ -157,6 +158,38 @@ class MazeMLX:
self.redraw_image()
return
def color_ft(self, maze: np.ndarray):
self.clear_image()
margin = math.trunc(
math.sqrt(self.width if self.width > self.height else self.height)
// 2
)
line_len = math.trunc(
(
(self.height - margin) // len(maze)
if self.height > self.width
else (self.width - margin) // len(maze[0])
)
)
for y in range(len(maze)):
for x in range(len(maze[0])):
x0 = x * line_len + margin
y0 = y * line_len + margin
x1 = x * line_len + line_len + margin
y1 = y * line_len + line_len + margin
if maze[y][x].get_north():
self.put_line((x0, y0), (x1, y0))
if maze[y][x].get_est():
self.put_line((x1, y0), (x1, y1))
if maze[y][x].get_south():
self.put_line((x0, y1), (x1, y1))
if maze[y][x].get_west():
self.put_line((x0, y0), (x0, y1))
if maze[y][x].value == 15:
self.put_block((x0, y0), (x1, y1))
self.redraw_image()
def close_loop(self, _: Any):
self.mlx.mlx_loop_exit(self.mlx_ptr)
@@ -198,12 +231,11 @@ class MazeMLX:
self.update_maze(amazing.maze.get_maze())
# time.sleep(0.01)
except StopIteration:
# self.color_ft(amazing)
if self.path_printer is not None:
try:
next(self.path_printer)
time.sleep(0.03)
except StopIteration:
pass
self.render_path()
else:
self.color_ft(amazing.maze.get_maze())
def main() -> None:
+5 -5
View File
@@ -1,8 +1,8 @@
WIDTH=11
HEIGHT=11
WIDTH=50
HEIGHT=50
ENTRY=1,1
EXIT=11,11
OUTPUT_FILE=maze.txt
PERFECT=True
GENERATOR=Kruskal
SOLVER=AStar
PERFECT=False
GENERATOR=DFS
SOLVER=DFS
+7
View File
@@ -166,6 +166,13 @@ class DepthFirstSearchSolver(MazeSolver):
def solve(self, maze: Maze, height: int = None,
width: int = None) -> str:
res = list()
for _ in range(50):
res.append(self.get_path(maze, height, width))
return min(res, key=lambda x: len(x))
def get_path(self, maze: Maze, height: int = None,
width: int = None) -> str:
path_str = ""
visited = np.zeros((height, width), dtype=bool)
path = list()