From 135e13deffa8c90ac4fcc67095f3ad5e8179c449 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Fri, 27 Mar 2026 13:33:45 +0100 Subject: [PATCH] WIP(iterative display): display change for every generation doesn't work --- a_maze_ing.py | 26 +++++++++------ src/amaz_lib/MazeGenerator.py | 2 -- test.txt | 62 +++++++++++++++++------------------ 3 files changed, 47 insertions(+), 43 deletions(-) diff --git a/a_maze_ing.py b/a_maze_ing.py index e519721..3f93db7 100644 --- a/a_maze_ing.py +++ b/a_maze_ing.py @@ -1,11 +1,12 @@ import os -from typing import Any, Callable +from typing import Any, Callable, Generator from src.AMazeIng import AMazeIng from src.parsing import Parsing from mlx.mlx import Mlx import numpy as np import math from src.amaz_lib import Maze +import time class MazeMLX: @@ -22,9 +23,8 @@ class MazeMLX: self.mlx.mlx_get_data_addr(self.img_ptr) ) - def __del__(self) -> None: + def close(self) -> None: self.mlx.mlx_destroy_image(self.mlx_ptr, self.img_ptr) - self.mlx.mlx_destroy_window(self.mlx_ptr, self.win_ptr) def put_pixel(self, x, y) -> None: offset = y * self.size_line + x * (self.bpp // 8) @@ -83,10 +83,16 @@ class MazeMLX: def close_loop(self, _: Any): self.mlx.mlx_loop_exit(self.mlx_ptr) + self.mlx.mlx_destroy_window(self.mlx_ptr, self.win_ptr) - def gen_maze(self, maze: np.ndarray) -> None: - self.mlx.mlx_loop_hook(self.mlx_ptr, self.update_maze, maze) - self.mlx.mlx_hook(self.win_ptr, 17, 0, self.close_loop, None) + def gen_maze(self, amazing: AMazeIng) -> None: + for _ in amazing.generate(): + self.update_maze(amazing.maze.get_maze()) + time.sleep(1) + + def start(self, amazing: AMazeIng) -> None: + self.mlx.mlx_loop_hook(self.mlx_ptr, self.gen_maze, amazing) + self.mlx.mlx_hook(self.win_ptr, 33, 0, self.close_loop, None) self.mlx.mlx_loop(self.mlx_ptr) @@ -96,14 +102,14 @@ def main() -> None: mlx = MazeMLX(1000, 1000) config = Parsing.DataMaze.get_data_maze("config.txt") amazing = AMazeIng(**config) - for _ in amazing.generate(): - os.system("clear") - amazing.maze.ascii_print() - mlx.gen_maze(amazing.maze.get_maze()) + mlx.start(amazing) with open("test.txt", "w") as output: output.write(amazing.__str__()) except Exception as err: print(err) + finally: + if mlx is not None: + mlx.close() if __name__ == "__main__": diff --git a/src/amaz_lib/MazeGenerator.py b/src/amaz_lib/MazeGenerator.py index f07fc23..8649bc4 100644 --- a/src/amaz_lib/MazeGenerator.py +++ b/src/amaz_lib/MazeGenerator.py @@ -129,7 +129,6 @@ class Kruskal(MazeGenerator): for h in range(height - 1): for w in range(width): walls += [(w + (width * h), w + (width * (h + 1)))] - print(walls) np.random.shuffle(walls) yield self.walls_to_maze(walls, height, width) @@ -147,7 +146,6 @@ class Kruskal(MazeGenerator): len(sets.sets) == 19 and cells_ft is not None ): break - print(f"nb sets: {len(sets.sets)}") return self.walls_to_maze(walls, height, width) diff --git a/test.txt b/test.txt index 2719793..bb53950 100644 --- a/test.txt +++ b/test.txt @@ -1,34 +1,34 @@ -BBBBBB97D397BBBB917BBD15513D17 -84684003BAA946AAA854696D3EEBC3 -C112D2AC28443D06EAB9103945507A -BEAED283E857C3AD52AEAEAC7D5452 -87C53EAEBC393C4154012D29553956 -A95147EBAD6AEBB87D2EC386D52853 -86D4517AC17C50443B813AABD1443E -EBD1787850513A9506AAEAAC3A93EB -B8543850787EEAAB87EC3EC3C2A852 -AEBD443AD4517EC6ED3D2D3EB8687E -838553AC7BD2BD3BBD43EB85069457 -EAC57843D2B86D4407D0106943C7BB -D01552B856C4553BC556AC783E97C2 -92C7D6C29557F96AFFFD6D16850512 -E83D15382D3BFC7857FD39696907EA -BEAD6D46ABC2FFFAFFF96AD2D2C57A -87ABD13BC6D293FAFD50547C3C3D3E -C168128455106EFAFFFABD17EBA907 -9056AEC7B92ABBBAD15407ABD2C2C3 -EAD1691786E8044296952D06B8147A -BEB87EAD053E87D6ED07812BAE8796 -87AAD5412B87C7957BEBEAAC2D07EB -C3C2D55286857905169456E9438796 -D07EBBD287A97EAB8507957E944507 -96BD0692AD445146C7EBC55503D3AB -C16D2BEAC3D514553D52BD53AE92EA -B8552C12BE97AB952D104796C52E92 -C47D016AABC16869456AD5413BAD6A -D113AED2C292D03ED53ABD52800392 -D6EC457C7C6C7EC57D446D56EEEC6E +BB93B9793D555157D3BD117D3B9793 +C42EAC3EC517BC3BD2856EB9442D2E +D1016D07BBAD2BA852A93D2ABBA92B +BEAC3D450469446ED2C2A92EA80286 +87A947BD417C15797ABAC2ED2AEA87 +87EC53AD54516D3AB82C7AD3807E87 +85397AC3951297AC4283D29468796B +ABC4145007AE87C17AAAD407BED2D2 +A8512B9687C7C39412E8114147D47A +A87EEAC78151382D2EBEEAD0553D12 +EABD3C17EED2C6AB87C17EBA95696E +9447816D393C3BC2C5387D46C7D297 +C179687942C3EC507D6A917D153AC3 +D0387EBA92BAF952FFF82C156BAA92 +92C41106AEAEFED457FEC7C7D0406A +AEBD6AAD03C3FFFBFFFD155154787E +83AD5687AA9457FAFD5503D6D512BB +EC2917ED6C2B97FAFFFBAE95396AC2 +D3C68517B9006D16B95407EBAE9452 +D07D6D2B86AABBA946B9697A8787BE +905397C6A96C04407D287878452D03 +AC784153EC57C7B83BC4387A9547EA +857EBA92D511392AAC3BAAD2C15156 +85392EEED56EC2C6EB86EC16D692BB +EB8285151539143BBAA9796BD16802 +942EEBAD03EEA9682C2C54387E96AE +87AD14696C7D687AC56D17845387AB +E96BA91017B952B85153C5057EED6A +D056EEEEA902B846D2D2D5295113BA +D455557D46EEC47D56D47D447EEC46 1,1 29,29 -SSEESSEESWSEESSSESSWSWWWWSSESSSWSEENEENESEEEESWSWSEESSSSEEEENNEESEENEEENNWNNWNNEENNENENESEESWSSESSESWSSSSWWSSSEESSESEN +SEESESESWSEESSWSWWWSSSWSESESEEEEENNEESWSSESSESESSEEEENEENEEENNNEEEEENEESSSSWSSWWWSSSWSWSESSSSENEEEESEN