Repository cloned 29.11.2025, 14’o clock.
game_loop:
As the coder herself noted, it would be nice to control the number of rooms, their min and max sizes, and so on. Right now they are hardcoded into gameloop. Maybe they could be read from the config file that already exists. These values are determined within the _generate_dungeon function, which could in theory fetch all the values easily before every generation. With some visual interface for changing these numbers, the project will become even more interesting!
This project is great with dividing code up into functions. Every function does about one thing, and that is it. On the other hand, init-function uses 3 functions itself: _load_fonts, _create_buttons and _load_assets. If these functions are meant to be run exactly once, I am not sure if having them as 3 separate functions is necessary. Although, it is good for readability.
Rooms.py
This class is actually pretty simple. It needs info of the tile sizes, and then randomly generates rooms into the space. It is decoupled from any visual representation, so one could change their interface, and still use this easily. Great work.
Bowyer_watson.py
To be fair with you, I could not understand what this is, as I have not ever studied bowyer_watson myself. Perhaps for readability’s sake, I could request the use of names that are a bit longer than ax, v3 and d. Or a more descriptive name for the iterable element in for-loops, like in ”for t in self.triangles”. But visually, the code looks great.
Config.py
Perhaps an even more ”modular” version of this file would be something more universally readable, like a .csv or .json file. But that might honestly be too much nitpicky optimization. Also, not worth it if the user would be editing the file without an interface. As it is, it serves its purpose and is easy to understand.
Notes about other files:
.gitignore has the most important stuff. For extra optimization, src-folder’s pychace could be added there too.
Pyproject.toml is perfect. Welll done on the separation of dev-dependencies vs runtime ones.
The coverage badge on the github page is neat.
Also, installing the project like advertised on the github page did not work for me unfortunately. It brings up a ”The current project could not be installed: No file/folder found for package algolabra-dungen. With the –no-root flag though, I was able to install the project, then run poetry env activate, and after I activated the environment, I could test the program. However, running tests did not work. I tried the given command, ”poetry run pytest src”, and a few others, but the test could not import pygame for me. If this project is mean to be installed as a package, so that all the commands work out the box, then pyproject.toml has to be changed a little, or commands that are friendly with –no-root could help.
Overall, when it comes to the actual function and visual look of the code itself, (perhaps due to dilligent pylinting?) this project is wonderful. I believe that all the small critiques I had are things that can easily be solved before the end of the course.
Repository cloned 29.11.2025, 14’o clock.
game_loop:
As the coder herself noted, it would be nice to control the number of rooms, their min and max sizes, and so on. Right now they are hardcoded into gameloop. Maybe they could be read from the config file that already exists. These values are determined within the _generate_dungeon function, which could in theory fetch all the values easily before every generation. With some visual interface for changing these numbers, the project will become even more interesting!
This project is great with dividing code up into functions. Every function does about one thing, and that is it. On the other hand, init-function uses 3 functions itself: _load_fonts, _create_buttons and _load_assets. If these functions are meant to be run exactly once, I am not sure if having them as 3 separate functions is necessary. Although, it is good for readability.
Rooms.py
This class is actually pretty simple. It needs info of the tile sizes, and then randomly generates rooms into the space. It is decoupled from any visual representation, so one could change their interface, and still use this easily. Great work.
Bowyer_watson.py
To be fair with you, I could not understand what this is, as I have not ever studied bowyer_watson myself. Perhaps for readability’s sake, I could request the use of names that are a bit longer than ax, v3 and d. Or a more descriptive name for the iterable element in for-loops, like in ”for t in self.triangles”. But visually, the code looks great.
Config.py
Perhaps an even more ”modular” version of this file would be something more universally readable, like a .csv or .json file. But that might honestly be too much nitpicky optimization. Also, not worth it if the user would be editing the file without an interface. As it is, it serves its purpose and is easy to understand.
Notes about other files:
.gitignore has the most important stuff. For extra optimization, src-folder’s pychace could be added there too.
Pyproject.toml is perfect. Welll done on the separation of dev-dependencies vs runtime ones.
The coverage badge on the github page is neat.
Also, installing the project like advertised on the github page did not work for me unfortunately. It brings up a ”The current project could not be installed: No file/folder found for package algolabra-dungen. With the –no-root flag though, I was able to install the project, then run poetry env activate, and after I activated the environment, I could test the program. However, running tests did not work. I tried the given command, ”poetry run pytest src”, and a few others, but the test could not import pygame for me. If this project is mean to be installed as a package, so that all the commands work out the box, then pyproject.toml has to be changed a little, or commands that are friendly with –no-root could help.
Overall, when it comes to the actual function and visual look of the code itself, (perhaps due to dilligent pylinting?) this project is wonderful. I believe that all the small critiques I had are things that can easily be solved before the end of the course.