WIP(iterative display): display change for every generation doesn't work

This commit is contained in:
2026-03-27 13:33:45 +01:00
parent 2828e37853
commit 135e13deff
3 changed files with 47 additions and 43 deletions
+16 -10
View File
@@ -1,11 +1,12 @@
import os import os
from typing import Any, Callable from typing import Any, Callable, Generator
from src.AMazeIng import AMazeIng from src.AMazeIng import AMazeIng
from src.parsing import Parsing from src.parsing import Parsing
from mlx.mlx import Mlx from mlx.mlx import Mlx
import numpy as np import numpy as np
import math import math
from src.amaz_lib import Maze from src.amaz_lib import Maze
import time
class MazeMLX: class MazeMLX:
@@ -22,9 +23,8 @@ class MazeMLX:
self.mlx.mlx_get_data_addr(self.img_ptr) 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_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: def put_pixel(self, x, y) -> None:
offset = y * self.size_line + x * (self.bpp // 8) offset = y * self.size_line + x * (self.bpp // 8)
@@ -83,10 +83,16 @@ class MazeMLX:
def close_loop(self, _: Any): def close_loop(self, _: Any):
self.mlx.mlx_loop_exit(self.mlx_ptr) 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: def gen_maze(self, amazing: AMazeIng) -> None:
self.mlx.mlx_loop_hook(self.mlx_ptr, self.update_maze, maze) for _ in amazing.generate():
self.mlx.mlx_hook(self.win_ptr, 17, 0, self.close_loop, None) 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) self.mlx.mlx_loop(self.mlx_ptr)
@@ -96,14 +102,14 @@ def main() -> None:
mlx = MazeMLX(1000, 1000) mlx = MazeMLX(1000, 1000)
config = Parsing.DataMaze.get_data_maze("config.txt") config = Parsing.DataMaze.get_data_maze("config.txt")
amazing = AMazeIng(**config) amazing = AMazeIng(**config)
for _ in amazing.generate(): mlx.start(amazing)
os.system("clear")
amazing.maze.ascii_print()
mlx.gen_maze(amazing.maze.get_maze())
with open("test.txt", "w") as output: with open("test.txt", "w") as output:
output.write(amazing.__str__()) output.write(amazing.__str__())
except Exception as err: except Exception as err:
print(err) print(err)
finally:
if mlx is not None:
mlx.close()
if __name__ == "__main__": if __name__ == "__main__":
-2
View File
@@ -129,7 +129,6 @@ class Kruskal(MazeGenerator):
for h in range(height - 1): for h in range(height - 1):
for w in range(width): for w in range(width):
walls += [(w + (width * h), w + (width * (h + 1)))] walls += [(w + (width * h), w + (width * (h + 1)))]
print(walls)
np.random.shuffle(walls) np.random.shuffle(walls)
yield self.walls_to_maze(walls, height, width) 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 len(sets.sets) == 19 and cells_ft is not None
): ):
break break
print(f"nb sets: {len(sets.sets)}")
return self.walls_to_maze(walls, height, width) return self.walls_to_maze(walls, height, width)
+31 -31
View File
@@ -1,34 +1,34 @@
BBBBBB97D397BBBB917BBD15513D17 BB93B9793D555157D3BD117D3B9793
84684003BAA946AAA854696D3EEBC3 C42EAC3EC517BC3BD2856EB9442D2E
C112D2AC28443D06EAB9103945507A D1016D07BBAD2BA852A93D2ABBA92B
BEAED283E857C3AD52AEAEAC7D5452 BEAC3D450469446ED2C2A92EA80286
87C53EAEBC393C4154012D29553956 87A947BD417C15797ABAC2ED2AEA87
A95147EBAD6AEBB87D2EC386D52853 87EC53AD54516D3AB82C7AD3807E87
86D4517AC17C50443B813AABD1443E 85397AC3951297AC4283D29468796B
EBD1787850513A9506AAEAAC3A93EB ABC4145007AE87C17AAAD407BED2D2
B8543850787EEAAB87EC3EC3C2A852 A8512B9687C7C39412E8114147D47A
AEBD443AD4517EC6ED3D2D3EB8687E A87EEAC78151382D2EBEEAD0553D12
838553AC7BD2BD3BBD43EB85069457 EABD3C17EED2C6AB87C17EBA95696E
EAC57843D2B86D4407D0106943C7BB 9447816D393C3BC2C5387D46C7D297
D01552B856C4553BC556AC783E97C2 C179687942C3EC507D6A917D153AC3
92C7D6C29557F96AFFFD6D16850512 D0387EBA92BAF952FFF82C156BAA92
E83D15382D3BFC7857FD39696907EA 92C41106AEAEFED457FEC7C7D0406A
BEAD6D46ABC2FFFAFFF96AD2D2C57A AEBD6AAD03C3FFFBFFFD155154787E
87ABD13BC6D293FAFD50547C3C3D3E 83AD5687AA9457FAFD5503D6D512BB
C168128455106EFAFFFABD17EBA907 EC2917ED6C2B97FAFFFBAE95396AC2
9056AEC7B92ABBBAD15407ABD2C2C3 D3C68517B9006D16B95407EBAE9452
EAD1691786E8044296952D06B8147A D07D6D2B86AABBA946B9697A8787BE
BEB87EAD053E87D6ED07812BAE8796 905397C6A96C04407D287878452D03
87AAD5412B87C7957BEBEAAC2D07EB AC784153EC57C7B83BC4387A9547EA
C3C2D55286857905169456E9438796 857EBA92D511392AAC3BAAD2C15156
D07EBBD287A97EAB8507957E944507 85392EEED56EC2C6EB86EC16D692BB
96BD0692AD445146C7EBC55503D3AB EB8285151539143BBAA9796BD16802
C16D2BEAC3D514553D52BD53AE92EA 942EEBAD03EEA9682C2C54387E96AE
B8552C12BE97AB952D104796C52E92 87AD14696C7D687AC56D17845387AB
C47D016AABC16869456AD5413BAD6A E96BA91017B952B85153C5057EED6A
D113AED2C292D03ED53ABD52800392 D056EEEEA902B846D2D2D5295113BA
D6EC457C7C6C7EC57D446D56EEEC6E D455557D46EEC47D56D47D447EEC46
1,1 1,1
29,29 29,29
SSEESSEESWSEESSSESSWSWWWWSSESSSWSEENEENESEEEESWSWSEESSSSEEEENNEESEENEEENNWNNWNNEENNENENESEESWSSESSESWSSSSWWSSSEESSESEN SEESESESWSEESSWSWWWSSSWSESESEEEEENNEESWSSESSESESSEEEENEENEEENNNEEEEENEESSSSWSSWWWSSSWSWSESSSSENEEEESEN