mirror of
https://github.com/maoakeEnterprise/amazing.git
synced 2026-04-28 16:04:35 +02:00
Compare commits
1 Commits
solver_dfs
...
2828e37853
| Author | SHA1 | Date | |
|---|---|---|---|
| 2828e37853 |
+90
-1
@@ -1,16 +1,105 @@
|
||||
import os
|
||||
from typing import Any, Callable
|
||||
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
|
||||
|
||||
|
||||
class MazeMLX:
|
||||
def __init__(self, height: int, width: int) -> None:
|
||||
self.mlx = Mlx()
|
||||
self.height = height
|
||||
self.width = width
|
||||
self.mlx_ptr = self.mlx.mlx_init()
|
||||
self.win_ptr = self.mlx.mlx_new_window(
|
||||
self.mlx_ptr, width, height, "amazing"
|
||||
)
|
||||
self.img_ptr = self.mlx.mlx_new_image(self.mlx_ptr, width, height)
|
||||
self.buf, self.bpp, self.size_line, self.format = (
|
||||
self.mlx.mlx_get_data_addr(self.img_ptr)
|
||||
)
|
||||
|
||||
def __del__(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)
|
||||
|
||||
self.buf[offset + 0] = 0xFF
|
||||
self.buf[offset + 1] = 0xFF
|
||||
self.buf[offset + 2] = 0xFF
|
||||
if self.bpp >= 32:
|
||||
self.buf[offset + 3] = 0xFF
|
||||
|
||||
def clear_image(self) -> None:
|
||||
self.buf[:] = b"\x00" * len(self.buf)
|
||||
|
||||
def put_line(self, start: tuple[int, int], end: tuple[int, int]) -> None:
|
||||
sx, sy = start
|
||||
ex, ey = end
|
||||
if sy == ey:
|
||||
for x in range(min(sx, ex), max(sx, ex) + 1):
|
||||
self.put_pixel(x, sy)
|
||||
if sx == ex:
|
||||
for y in range(min(sy, ey), max(sy, ey) + 1):
|
||||
self.put_pixel(sx, y)
|
||||
|
||||
def update_maze(self, maze: np.ndarray) -> None:
|
||||
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))
|
||||
|
||||
self.mlx.mlx_put_image_to_window(
|
||||
self.mlx_ptr, self.win_ptr, self.img_ptr, 0, 0
|
||||
)
|
||||
|
||||
def close_loop(self, _: Any):
|
||||
self.mlx.mlx_loop_exit(self.mlx_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)
|
||||
self.mlx.mlx_loop(self.mlx_ptr)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
mlx = None
|
||||
try:
|
||||
mlx = MazeMLX(1000, 1000)
|
||||
config = Parsing.DataMaze.get_data_maze("config.txt")
|
||||
print(config)
|
||||
amazing = AMazeIng(**config)
|
||||
for _ in amazing.generate():
|
||||
os.system("clear")
|
||||
amazing.maze.ascii_print()
|
||||
mlx.gen_maze(amazing.maze.get_maze())
|
||||
with open("test.txt", "w") as output:
|
||||
output.write(amazing.__str__())
|
||||
except Exception as err:
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
957D3955553B957917B93D3D15553B
|
||||
AB97AABBD16847D6ABAAAD452B97C6
|
||||
8687A8443EBC55538286E953A807D3
|
||||
878506952BAD3B942EAD503E86ED52
|
||||
852D4383C6C384438147D2C3879796
|
||||
ED2B96EC7D384792EC5792BEC38103
|
||||
BBC2C795516C13EC51556C053AAEAA
|
||||
8452BD43D4396AD552D3BBEBE803EE
|
||||
853A8552B902BABD5290029696AA93
|
||||
C7AC2B9686EE82ABB82EEC07C7E86A
|
||||
D3AD0683C7D3EAC2C6C3D5693956D2
|
||||
9687E92EBBD0103857D43916A85796
|
||||
C52BD2A942D2EAE857D542E946D147
|
||||
D3EC12EE9692F852FFFBBE96957EBB
|
||||
B87BAA97852AFED057FC07C507D506
|
||||
C2942C47C7EEFFFAFFFD4517ED53C3
|
||||
946BABB91553BBFEFD51796955147A
|
||||
C3BA82AAC53C6AFBFFF816BEBD053A
|
||||
D06AE828792B90543D568547856D42
|
||||
92BC56AAD2C6A87B83916D516BD53A
|
||||
AAAD13C47AD3AED46EEA95103853C2
|
||||
EAAD2815143C43D3BBD0696EAED416
|
||||
B847EEC3EBC57AD4407C7C3B85792B
|
||||
AEBBD5503A9156BD16D1792A8796AA
|
||||
87AC3BD2C42C57C383D2BEAC47C3EA
|
||||
C50542B857879112E812C1297BD6BA
|
||||
D3C3D44417C7EEAC3EAC52C47C516A
|
||||
BA903B91693B97AB87A938157D5052
|
||||
802A82EC5684414287AAEE87953AD2
|
||||
EEEEEC57D547D6D6C546D54547C47E
|
||||
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
|
||||
|
||||
1,1
|
||||
29,29
|
||||
SSSSEESSESSSENEEESWSSWSSWSSSSESESSENNNNESEESWSSSWWWSESSSSESWSEENESEEEENNNESESSSEENNNNESEESESSEENEESENNEESW
|
||||
SSEESSEESWSEESSSESSWSWWWWSSESSSWSEENEENESEEEESWSWSEESSSSEEEENNEESEENEEENNWNNWNNEENNENENESEESWSSESSESWSSSSWWSSSEESSESEN
|
||||
|
||||
Reference in New Issue
Block a user