From b1b7fcaacda5c92bb020929efc2d47097ae7cf80 Mon Sep 17 00:00:00 2001 From: Axy Date: Mon, 30 Mar 2026 00:38:59 +0200 Subject: [PATCH] Config refactor and more errors --- .gitignore | 2 +- Makefile | 4 ++- a_maze_ing.py | 22 ++++++++++++---- bad.conf | 7 +++++ complex.conf | 62 +++++++++++++++++++++++++++++++++++++++++++++ example.conf | 62 --------------------------------------------- minimal.conf | 7 +++++ minimal_visual.conf | 8 ++++++ 8 files changed, 105 insertions(+), 69 deletions(-) create mode 100644 bad.conf create mode 100644 complex.conf delete mode 100644 example.conf create mode 100644 minimal.conf create mode 100644 minimal_visual.conf diff --git a/.gitignore b/.gitignore index a388820..bea58dd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ out.prof prof.svg tmp .venv -test +maze.txt diff --git a/Makefile b/Makefile index 13a84d5..b4f075e 100644 --- a/Makefile +++ b/Makefile @@ -13,12 +13,14 @@ run-prof: flameprof out.prof > prof.svg run: - poetry run python a_maze_ing.py + poetry run python a_maze_ing.py minimal_visual.conf build: poetry build -o . clean: + # sketchy rf rm + rm -rf __pycache__ **/__pycache__ lint: poetry run flake8 . diff --git a/a_maze_ing.py b/a_maze_ing.py index 995b899..14544c9 100644 --- a/a_maze_ing.py +++ b/a_maze_ing.py @@ -1,4 +1,4 @@ -from sys import stderr +from sys import argv, stderr from typing import Never from mazegen.config.parser_combinator import ParseError from mazegen.display.observer import MazeRegenerate, TTYTracker @@ -16,16 +16,28 @@ from mazegen.config.config_parser import Config, ConfigError from mazegen.maze.output import format_output import random -config_filename = "./example.conf" -config_str = open(config_filename).read() - def error(s: str) -> Never: - print("Error:", file=stderr) + print("Error:\n", file=stderr) print(s, end="", file=stderr) exit(1) +if len(argv) != 2: + error( + " Invalid argument count, usage:\n" + + "\n" + + " > python a_maze_ing.py \n" + + "\n" + ) + +config_filename = argv[1] +try: + config_str = open(config_filename).read() +except IOError: + error(f" Failed to read file {config_filename}\n\n") + + try: config = Config.parse(config_str) except ParseError as e: diff --git a/bad.conf b/bad.conf new file mode 100644 index 0000000..a25414b --- /dev/null +++ b/bad.conf @@ -0,0 +1,7 @@ +WIDTH=25 +HEIGHT=25 +ENTRY=1,1 +EXIT=24,24, +OUTPUT_FILE=maze.txt +PERFECT=True +SEED=111 diff --git a/complex.conf b/complex.conf new file mode 100644 index 0000000..154c8b8 --- /dev/null +++ b/complex.conf @@ -0,0 +1,62 @@ +WIDTH=100 +HEIGHT=100 +ENTRY=1,1 +EXIT=24,24 +OUTPUT_FILE=test +PERFECT=True +VISUAL=True +SCREENSAVER=True +SEED=111 + +TILEMAP_WALL_SIZE=2,1 +TILEMAP_CELL_SIZE=4,2 + +TILEMAP_FULL="{1000,1000,1000:1000,1000,1000}######" +TILEMAP_FULL="{1000,1000,1000:1000,1000,1000}######" +TILEMAP_FULL="{1000,1000,1000:1000,1000,1000}######" + +TILEMAP_FULL=1"{100,1000,1000:1000,1000,1000}███{1000,100,1000:1000,1000,1000}███" +TILEMAP_FULL=1"{100,1000,1000:1000,1000,1000}######" +TILEMAP_FULL=1"{100,1000,1000:1000,1000,1000}######" + +TILEMAP_PATH="{100,100,1000:100,100,1000} " +TILEMAP_PATH="{100,100,1000:100,100,1000} " +TILEMAP_PATH="{100,100,1000:100,100,1000} " + +TILEMAP_ENTRY="{1000,1000,1000:100,100,1000}######" +TILEMAP_ENTRY="{1000,1000,1000:100,100,1000}######" +TILEMAP_ENTRY="{1000,1000,1000:100,100,1000}######" + +TILEMAP_EXIT="{0,0,0:100,100,1000}######" +TILEMAP_EXIT="{0,0,0:100,100,1000}######" +TILEMAP_EXIT="{0,0,0:100,100,1000}######" + +TILEMAP_EMPTY="{0,0,0:0,0,0} " +TILEMAP_EMPTY="{0,0,0:0,0,0} " +TILEMAP_EMPTY="{0,0,0:0,0,0} " + +TILEMAP_BACKGROUND_SIZE=8,4 +TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0}## " +TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0}###### " +TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0} ## " +TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0}## ## " +TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0}## " +TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0}###### " +TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0} ## " +TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0}## ## " + +TILEMAP_BOX_SIZE=1,1 +TILEMAP_BOX_BRIDGE_SIZE=1,1 +TILEMAP_BOX="{1000,500,500:0,0,0}+-++" +TILEMAP_BOX="{1000,500,500:0,0,0}| ||" +TILEMAP_BOX="{1000,500,500:0,0,0}+-++" +TILEMAP_BOX="{1000,500,500:0,0,0}+-++" + +MAZE_PATTERN=" # # " +MAZE_PATTERN=" # # " +MAZE_PATTERN=" # " +MAZE_PATTERN=" " +MAZE_PATTERN=" # # " +MAZE_PATTERN=" " +MAZE_PATTERN="# # #" +MAZE_PATTERN=" ## ## " diff --git a/example.conf b/example.conf deleted file mode 100644 index 30b2df2..0000000 --- a/example.conf +++ /dev/null @@ -1,62 +0,0 @@ -WIDTH=100 -HEIGHT=100 -ENTRY=1,1 -EXIT=24,24 -OUTPUT_FILE=test -PERFECT=True -VISUAL=True -SCREENSAVER=False -SEED=111 - -#TILEMAP_WALL_SIZE=2,1 -#TILEMAP_CELL_SIZE=4,2 -# -#TILEMAP_FULL="{1000,1000,1000:1000,1000,1000}######" -#TILEMAP_FULL="{1000,1000,1000:1000,1000,1000}######" -#TILEMAP_FULL="{1000,1000,1000:1000,1000,1000}######" -# -#TILEMAP_FULL=1"{100,1000,1000:1000,1000,1000}███{1000,100,1000:1000,1000,1000}███" -#TILEMAP_FULL=1"{100,1000,1000:1000,1000,1000}######" -#TILEMAP_FULL=1"{100,1000,1000:1000,1000,1000}######" -# -#TILEMAP_PATH="{100,100,1000:100,100,1000} " -#TILEMAP_PATH="{100,100,1000:100,100,1000} " -#TILEMAP_PATH="{100,100,1000:100,100,1000} " -# -#TILEMAP_ENTRY="{100,100,1000:1000,1000,1000}######" -#TILEMAP_ENTRY="{100,100,1000:1000,1000,1000}######" -#TILEMAP_ENTRY="{100,100,1000:1000,1000,1000}######" -# -#TILEMAP_EXIT="{100,100,1000:0,0,0}######" -#TILEMAP_EXIT="{100,100,1000:0,0,0}######" -#TILEMAP_EXIT="{100,100,1000:0,0,0}######" -# -#TILEMAP_EMPTY="{0,0,0:0,0,0} " -#TILEMAP_EMPTY="{0,0,0:0,0,0} " -#TILEMAP_EMPTY="{0,0,0:0,0,0} " -# -#TILEMAP_BACKGROUND_SIZE=8,4 -#TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0}## " -#TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0}###### " -#TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0} ## " -#TILEMAP_BACKGROUND="{1000,1000,1000:0,0,0}## ## " -#TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0}## " -#TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0}###### " -#TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0} ## " -#TILEMAP_BACKGROUND=1"{100,1000,1000:0,0,0}## ## " -# -#TILEMAP_BOX_SIZE=1,1 -#TILEMAP_BOX_BRIDGE_SIZE=1,1 -#TILEMAP_BOX="{1000,500,500:0,0,0}+-++" -#TILEMAP_BOX="{1000,500,500:0,0,0}| ||" -#TILEMAP_BOX="{1000,500,500:0,0,0}+-++" -#TILEMAP_BOX="{1000,500,500:0,0,0}+-++" -# -#MAZE_PATTERN=" # # " -#MAZE_PATTERN=" # # " -#MAZE_PATTERN=" # " -#MAZE_PATTERN=" " -#MAZE_PATTERN=" # # " -#MAZE_PATTERN=" " -#MAZE_PATTERN="# # #" -#MAZE_PATTERN=" ## ## " diff --git a/minimal.conf b/minimal.conf new file mode 100644 index 0000000..60a44b6 --- /dev/null +++ b/minimal.conf @@ -0,0 +1,7 @@ +WIDTH=25 +HEIGHT=25 +ENTRY=1,1 +EXIT=24,24 +OUTPUT_FILE=maze.txt +PERFECT=True +SEED=111 diff --git a/minimal_visual.conf b/minimal_visual.conf new file mode 100644 index 0000000..3e393c6 --- /dev/null +++ b/minimal_visual.conf @@ -0,0 +1,8 @@ +WIDTH=25 +HEIGHT=25 +ENTRY=1,1 +EXIT=24,24 +OUTPUT_FILE=maze.txt +PERFECT=True +VISUAL=True +SEED=621 -- 2.53.0