mirror of
https://github.com/maoakeEnterprise/amazing.git
synced 2026-04-28 16:04:35 +02:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 40e25757c7 | |||
| b1eda06fa5 | |||
| 769198c06b | |||
| 2c7b565137 | |||
| d23959ce74 | |||
| 4cb678b5be |
+37
-10
@@ -3,7 +3,6 @@ from src.AMazeIng import AMazeIng
|
||||
from src.parsing import Parsing
|
||||
from mlx import Mlx
|
||||
import numpy as np
|
||||
import math
|
||||
import time
|
||||
|
||||
|
||||
@@ -96,8 +95,9 @@ class MazeMLX:
|
||||
def random_color_ft() -> Any:
|
||||
colors = [
|
||||
[0xFF, 0xBF, 0x00, 0xFF], # blue
|
||||
[0xFF, 0x00, 0x80, 0xFF], # purple
|
||||
[0xFF, 0x00, 0xFF, 0xFF], # rose
|
||||
[0x00, 0xFF, 0x40, 0xFF], # green
|
||||
[0xFF, 0x00, 0xFF, 0xFF], # pink
|
||||
[0x00, 0xFF, 0xFF, 0xFF], # yellow
|
||||
]
|
||||
while True:
|
||||
for color in colors:
|
||||
@@ -106,12 +106,12 @@ class MazeMLX:
|
||||
@staticmethod
|
||||
def random_color() -> Any:
|
||||
colors = [
|
||||
[0x00, 0x00, 0xFF, 0xFF], # red
|
||||
[0xFF, 0x00, 0xFF, 0xFF], # pink
|
||||
[0x00, 0xFF, 0xFF, 0xFF], # yellow
|
||||
[0x00, 0xFF, 0x40, 0xFF], # green
|
||||
[0xFF, 0xBF, 0x00, 0xFF], # blue
|
||||
[0xFF, 0x00, 0x80, 0xFF], # purple
|
||||
[0xFF, 0x00, 0xFF, 0xFF], # pink
|
||||
[0x00, 0x00, 0xFF, 0xFF], # red
|
||||
]
|
||||
while True:
|
||||
for color in colors:
|
||||
@@ -240,16 +240,20 @@ class MazeMLX:
|
||||
y0 = y * line_len + margin_y
|
||||
x1 = x * line_len + line_len + margin_x
|
||||
y1 = y * line_len + line_len + margin_y
|
||||
self.put_block((x0, y0), (x1, y1))
|
||||
self.put_block((x0, y0), (x1, y1), color)
|
||||
|
||||
def draw_image(self, amazing: AMazeIng) -> None:
|
||||
if self.render_maze(amazing):
|
||||
if self.path_printer and self.print_path:
|
||||
if self.render_path():
|
||||
color = next(self.color_gen_ft)
|
||||
color
|
||||
self.draw_ft(amazing.maze.get_maze(), color)
|
||||
next(self.timer_gen)
|
||||
else:
|
||||
self.time_gen()
|
||||
self.update_maze(amazing.maze.get_maze())
|
||||
self.draw_ft(amazing.maze.get_maze())
|
||||
self.put_start_end(amazing)
|
||||
self.redraw_image()
|
||||
|
||||
def shift_color(self):
|
||||
@@ -258,9 +262,18 @@ class MazeMLX:
|
||||
def shift_color_ft(self):
|
||||
self.color_gen_ft = self.random_color_ft()
|
||||
|
||||
def time_gen(self):
|
||||
self.timer_gen = self.time_generator()
|
||||
|
||||
def restart_maze(self, amazing: AMazeIng) -> None:
|
||||
self.generator = amazing.generate()
|
||||
|
||||
def time_generator(self) -> Any:
|
||||
yield
|
||||
while True:
|
||||
time.sleep(0.3)
|
||||
yield
|
||||
|
||||
def restart_path(self, amazing: AMazeIng) -> None:
|
||||
self.path_printer = self.put_path(amazing)
|
||||
|
||||
@@ -277,7 +290,6 @@ class MazeMLX:
|
||||
try:
|
||||
next(self.generator)
|
||||
self.update_maze(amazing.maze.get_maze())
|
||||
self.put_start_end(amazing)
|
||||
return False
|
||||
except StopIteration:
|
||||
pass
|
||||
@@ -296,14 +308,29 @@ class MazeMLX:
|
||||
if keycode == 52:
|
||||
self.close_loop(None)
|
||||
|
||||
def handle_key_press_mteriier(self, keycode: int,
|
||||
amazing: AMazeIng) -> None:
|
||||
if keycode == 38:
|
||||
self.restart_maze(amazing)
|
||||
self.print_path = False
|
||||
if keycode == 233:
|
||||
self.restart_path(amazing)
|
||||
self.print_path = True if self.print_path is False else False
|
||||
if keycode == 34:
|
||||
self.print_path = False
|
||||
self.color = next(self.color_gen)
|
||||
if keycode == 39:
|
||||
self.close_loop(None)
|
||||
|
||||
def start(self, amazing: AMazeIng) -> None:
|
||||
self.restart_maze(amazing)
|
||||
self.shift_color()
|
||||
self.shift_color_ft()
|
||||
self.time_gen()
|
||||
self.mlx.mlx_loop_hook(self.mlx_ptr, self.draw_image, amazing)
|
||||
self.mlx.mlx_hook(self.win_ptr, 33, 0, self.close_loop, None)
|
||||
self.mlx.mlx_hook(
|
||||
self.win_ptr, 2, 1 << 0, self.handle_key_press, amazing
|
||||
self.win_ptr, 2, 1 << 0, self.handle_key_press_mteriier, amazing
|
||||
)
|
||||
self.mlx.mlx_loop(self.mlx_ptr)
|
||||
|
||||
@@ -311,7 +338,7 @@ class MazeMLX:
|
||||
def main() -> None:
|
||||
mlx = None
|
||||
try:
|
||||
mlx = MazeMLX(1800, 1800)
|
||||
mlx = MazeMLX(1000, 1000)
|
||||
config = Parsing.DataMaze.get_data_maze("config.txt")
|
||||
amazing = AMazeIng(**config)
|
||||
mlx.start(amazing)
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
WIDTH=30
|
||||
HEIGHT=30
|
||||
WIDTH=13
|
||||
HEIGHT=13
|
||||
ENTRY=1,1
|
||||
EXIT=5,5
|
||||
OUTPUT_FILE=maze.txt
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
import numpy
|
||||
from numpy.typing import NDArray
|
||||
from typing import Optional, Any
|
||||
|
||||
|
||||
@dataclass
|
||||
class Maze:
|
||||
maze: numpy.ndarray
|
||||
maze: Optional[NDArray[Any]] = None
|
||||
|
||||
def get_maze(self) -> numpy.ndarray | None:
|
||||
def get_maze(self) -> Optional[NDArray[Any]]:
|
||||
return self.maze
|
||||
|
||||
def set_maze(self, new_maze: numpy.ndarray) -> None:
|
||||
def set_maze(self, new_maze: NDArray[Any]) -> None:
|
||||
self.maze = new_maze
|
||||
|
||||
def __str__(self) -> str:
|
||||
@@ -24,6 +24,9 @@ class Maze:
|
||||
return res
|
||||
|
||||
def ascii_print(self) -> None:
|
||||
if self.maze is None:
|
||||
print("None")
|
||||
return
|
||||
for cell in self.maze[0]:
|
||||
print("_", end="")
|
||||
if cell.get_north():
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import pytest
|
||||
from amaz_lib.Cell import Cell
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from amaz_lib.Cell import Cell
|
||||
import numpy as np
|
||||
from amaz_lib import AStar, Maze, MazeSolver
|
||||
from amaz_lib import AStar, Maze
|
||||
|
||||
|
||||
def test_solver() -> None:
|
||||
|
||||
Reference in New Issue
Block a user