codingpirates-maze 0.3.0__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/PKG-INFO +1 -1
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/pyproject.toml +1 -1
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/pyproject.toml.orig +1 -1
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/maze.py +9 -13
- codingpirates_maze-0.4.0/src/maze/puzzle.py +37 -0
- codingpirates_maze-0.4.0/src/maze/resources.py +115 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/screencapture.py +4 -2
- codingpirates_maze-0.3.0/src/maze/puzzle.py +0 -75
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/README.md +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/__init__.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/code_blocks.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/convert_level.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/create_course.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/lesson.md.j2 +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/maze.py.j2 +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/test.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/test_all.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/__init__.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/bee.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/beeshape.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/birds.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/collector.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/farmer.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/harvester.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/background.png +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/cloud.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/honeycomb.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/path.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/purple_flower.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/red_flower.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/.gitignore +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/background.png +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/monster.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/path.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/tnt.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_1.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_2.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_3.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_4.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_5.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/.gitignore +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/crystal.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_1.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_2.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_3.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_4.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/wall_1.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/wall_2.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/background.png +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/corn.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/hole.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/lettuce.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/path.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/pile.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/pumpkin.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/sprout.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/background.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/flower.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/obstacle.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/path.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/pumpkin.gif +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra14a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra14a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra14a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra15a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra15a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra15a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra16a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra16a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra16a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra14b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra14b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra14b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra15b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra15b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra15b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra16b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra16b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra16b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops11_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops11_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq11_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq11_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq12_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq12_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq13_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq13_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp4a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp4a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp5a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp5a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq11_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq11_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq12_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq12_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq13_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq13_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops11_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops11_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge2a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge2a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_loops_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_loops_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog6_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog7_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog8_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog9_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge1a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge1a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging8_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging8_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_loops_challenge1a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_loops_challenge1a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming6_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming7_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming9_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_debugging_challenge1a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging10_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_nested_loops_challenge2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_nested_loops_challenge2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_nested_loops_challenge2a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_ramp10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_ramp8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_ramp9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops9_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_ramp13.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_until_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_predict2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_predict2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_predict2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_harvester_nested_loops_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_harvester_nested_loops_challenge1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_harvester_nested_loops_challenge1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops11_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops11_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops12_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops12_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops8_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops8_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5c_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5c_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5c_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5c.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_predict2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_predict2_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_predict2_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until2_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until2_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until2_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions11_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_ramp14.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_concept1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_concept2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_concept3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions10a1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions10a1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions10b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions11_predict.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions11_predict_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions13_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions13_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2ba.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2ba_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2ba_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions4b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions5c.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions6c.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions7a1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions7a1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions7b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions8a1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions8a1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions8b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions9a1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions9a1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions9b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_predict2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12b_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12b_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12b_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12d_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12d_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12d_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12e_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12e_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12e_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12g.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_while1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_while1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_while1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals1_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals7_predict2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for10.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for11.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for3_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for9.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions3a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions5a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions8a.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functionsPre7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp3.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp4.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp5.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp6.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp7.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp8.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp9_predict1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp_challenge1.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp_challenge2.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/coursea_maze_ramp1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/coursea_maze_ramp1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_10_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_10_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_10_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_predict1_2023.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_predict1_2024.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_predict1_2025.json +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/pvz.py +0 -0
- {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/zombieshape.py +0 -0
|
@@ -4,18 +4,20 @@ import math
|
|
|
4
4
|
import random
|
|
5
5
|
import functools
|
|
6
6
|
import json
|
|
7
|
-
import os
|
|
8
7
|
import sys
|
|
9
|
-
import importlib.resources
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
from .resources import get_provider
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
# os.environ is unavailable under Skulpt (import os raises NotImplementedError there)
|
|
13
|
+
import os
|
|
14
|
+
_TESTMODE = os.environ.get('TESTMODE')
|
|
15
|
+
except Exception:
|
|
16
|
+
_TESTMODE = None
|
|
12
17
|
|
|
13
18
|
_TRACER_DELAY = 0 if _TESTMODE == "True" else 15
|
|
14
19
|
_TRACER_N = 0 if _TESTMODE == "True" else 1
|
|
15
20
|
|
|
16
|
-
# Get the directory of this Python file
|
|
17
|
-
_DIR_PATH = os.path.dirname(os.path.realpath(__file__))
|
|
18
|
-
|
|
19
21
|
|
|
20
22
|
class Pen(turtle.Turtle):
|
|
21
23
|
def __init__(self):
|
|
@@ -313,15 +315,9 @@ class Maze:
|
|
|
313
315
|
_TRACER_DELAY = 0
|
|
314
316
|
_TRACER_N = 0
|
|
315
317
|
|
|
316
|
-
# @staticmethod
|
|
317
|
-
# def shapefile(name: str, ext: str = ".gif") -> str:
|
|
318
|
-
# name = os.path.join(Maze.instance.maze_type.subfolder, name)
|
|
319
|
-
# return os.path.join(_DIR_PATH, "images", name + ext)
|
|
320
|
-
|
|
321
318
|
@staticmethod
|
|
322
319
|
def shapefile(name: str, ext: str = ".gif") -> str:
|
|
323
|
-
|
|
324
|
-
return image_path.__str__()
|
|
320
|
+
return get_provider().get_shape_source(Maze.instance.maze_type.subfolder, name, ext)
|
|
325
321
|
|
|
326
322
|
instance = None
|
|
327
323
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from .maze import Maze, Player
|
|
2
|
+
from .bee import BeeMazeType
|
|
3
|
+
from .pvz import ZombieMazeType
|
|
4
|
+
from .farmer import FarmerMazeType
|
|
5
|
+
from .harvester import HarvesterMazeType
|
|
6
|
+
from .birds import BirdsMazeType
|
|
7
|
+
from .collector import CollectorMazeType
|
|
8
|
+
from .resources import get_provider
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Puzzle:
|
|
12
|
+
mazeTypes = {
|
|
13
|
+
"bee": BeeMazeType(),
|
|
14
|
+
"pvz": ZombieMazeType(),
|
|
15
|
+
"farmer": FarmerMazeType(),
|
|
16
|
+
"harvester": HarvesterMazeType(),
|
|
17
|
+
"birds": BirdsMazeType(),
|
|
18
|
+
"collector": CollectorMazeType()
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@staticmethod
|
|
22
|
+
def from_file(filename):
|
|
23
|
+
level_json = get_provider().get_level(filename)
|
|
24
|
+
|
|
25
|
+
game_id = level_json.get("game_id")
|
|
26
|
+
if game_id and int(game_id) == 25:
|
|
27
|
+
levelProps = level_json['properties']
|
|
28
|
+
|
|
29
|
+
mazeType = Puzzle.mazeTypes[levelProps["skin"]]
|
|
30
|
+
|
|
31
|
+
return Maze(level_json, mazeType)
|
|
32
|
+
else:
|
|
33
|
+
print(f"Unknown game_id: {game_id}")
|
|
34
|
+
|
|
35
|
+
@staticmethod
|
|
36
|
+
def done():
|
|
37
|
+
Maze.instance.done()
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pluggable resource loading for maze levels/images.
|
|
3
|
+
|
|
4
|
+
CPython (desktop, `pip install codingpirates-maze`) resolves levels/images from the local
|
|
5
|
+
filesystem via `DefaultFilesystemProvider`. Skulpt (browser, no real filesystem) instead
|
|
6
|
+
fetches them from a version-pinned CDN via `SkulptBrowserProvider`. The active provider is
|
|
7
|
+
auto-detected via `platform.python_implementation()` so `from maze import Puzzle` just works
|
|
8
|
+
in both environments without any explicit wiring.
|
|
9
|
+
|
|
10
|
+
Only `DefaultFilesystemProvider` may import `os`/`importlib.resources`, and only locally
|
|
11
|
+
inside its methods -- those modules raise `NotImplementedError` on import under Skulpt, so
|
|
12
|
+
importing them at module level here (or in puzzle.py/maze.py) would crash `import maze`.
|
|
13
|
+
"""
|
|
14
|
+
import platform
|
|
15
|
+
|
|
16
|
+
IS_SKULPT = platform.python_implementation() == "Skulpt"
|
|
17
|
+
|
|
18
|
+
# Keep this aligned with the `version` in pyproject.toml and the matching GitHub release tag
|
|
19
|
+
# (see README) so the CDN URL below actually resolves to the release these assets ship with.
|
|
20
|
+
_PACKAGE_VERSION = "0.4.0"
|
|
21
|
+
_GITHUB_REPO = "StefanUG/codingpirates-maze"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _default_asset_base_url() -> str:
|
|
25
|
+
return f"https://cdn.jsdelivr.net/gh/{_GITHUB_REPO}@v{_PACKAGE_VERSION}/src/maze"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ResourceProvider:
|
|
29
|
+
"""Strategy for loading level data and shape/image sources."""
|
|
30
|
+
|
|
31
|
+
def get_level(self, name: str) -> dict:
|
|
32
|
+
"""Return the level data (as a plain dict) for a given level name."""
|
|
33
|
+
raise NotImplementedError
|
|
34
|
+
|
|
35
|
+
def get_shape_source(self, subfolder: str, name: str, ext: str = ".gif") -> str:
|
|
36
|
+
"""Return whatever `screen.register_shape` / `screen.bgpic` need: a local
|
|
37
|
+
filesystem path (desktop) or an image URL (browser)."""
|
|
38
|
+
raise NotImplementedError
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class DefaultFilesystemProvider(ResourceProvider):
|
|
42
|
+
"""Reproduces the pre-refactor filesystem-based resolution exactly."""
|
|
43
|
+
|
|
44
|
+
def get_level(self, name: str) -> dict:
|
|
45
|
+
import importlib.resources
|
|
46
|
+
import json
|
|
47
|
+
import os
|
|
48
|
+
import sys
|
|
49
|
+
|
|
50
|
+
filename = name if name.endswith(".json") else f"{name}.json"
|
|
51
|
+
script_path = os.path.dirname(os.path.realpath(sys.argv[0]))
|
|
52
|
+
|
|
53
|
+
resolved = None
|
|
54
|
+
for candidate in (
|
|
55
|
+
filename,
|
|
56
|
+
os.path.join(script_path, filename),
|
|
57
|
+
os.path.join(script_path, "levels", filename),
|
|
58
|
+
):
|
|
59
|
+
if os.path.exists(candidate):
|
|
60
|
+
resolved = candidate
|
|
61
|
+
break
|
|
62
|
+
|
|
63
|
+
if resolved is None:
|
|
64
|
+
packaged = importlib.resources.files("maze.levels").joinpath(os.path.basename(filename))
|
|
65
|
+
if packaged.is_file():
|
|
66
|
+
resolved = packaged
|
|
67
|
+
|
|
68
|
+
if resolved is None:
|
|
69
|
+
raise TypeError("Unable to find file for level " + name)
|
|
70
|
+
|
|
71
|
+
# `resolved` is either a plain path (str) or an importlib.resources Traversable
|
|
72
|
+
opener = resolved.open if hasattr(resolved, "open") else lambda: open(resolved)
|
|
73
|
+
with opener() as fp:
|
|
74
|
+
return json.load(fp)
|
|
75
|
+
|
|
76
|
+
def get_shape_source(self, subfolder: str, name: str, ext: str = ".gif") -> str:
|
|
77
|
+
import importlib.resources
|
|
78
|
+
|
|
79
|
+
with importlib.resources.path("maze.images." + subfolder, name + ext) as image_path:
|
|
80
|
+
return str(image_path)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class SkulptBrowserProvider(ResourceProvider):
|
|
84
|
+
"""Only ever instantiated when IS_SKULPT is True."""
|
|
85
|
+
|
|
86
|
+
def __init__(self, asset_base_url: str):
|
|
87
|
+
self.asset_base_url = asset_base_url
|
|
88
|
+
|
|
89
|
+
def get_level(self, name: str) -> dict:
|
|
90
|
+
import json
|
|
91
|
+
import urllib.request
|
|
92
|
+
|
|
93
|
+
filename = name if name.endswith(".json") else f"{name}.json"
|
|
94
|
+
url = f"{self.asset_base_url}/levels/{filename}"
|
|
95
|
+
return json.loads(urllib.request.urlopen(url).read())
|
|
96
|
+
|
|
97
|
+
def get_shape_source(self, subfolder: str, name: str, ext: str = ".gif") -> str:
|
|
98
|
+
# No fetch needed -- Skulpt's turtle loads images from a URL itself.
|
|
99
|
+
return f"{self.asset_base_url}/images/{subfolder}/{name}{ext}"
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
_provider: ResourceProvider = (
|
|
103
|
+
SkulptBrowserProvider(_default_asset_base_url()) if IS_SKULPT
|
|
104
|
+
else DefaultFilesystemProvider()
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def set_provider(provider: ResourceProvider) -> None:
|
|
109
|
+
"""Escape hatch for tests or to override the auto-picked default."""
|
|
110
|
+
global _provider
|
|
111
|
+
_provider = provider
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def get_provider() -> ResourceProvider:
|
|
115
|
+
return _provider
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import turtle
|
|
2
|
-
import datetime
|
|
3
|
-
import subprocess
|
|
4
2
|
"""
|
|
5
3
|
Module to capture a turtle screen into image files
|
|
6
4
|
"""
|
|
7
5
|
|
|
8
6
|
def capture(screen:turtle.Screen, filename=None):
|
|
7
|
+
# desktop-only tool: subprocess/datetime are unavailable under Skulpt, so import lazily
|
|
8
|
+
import datetime
|
|
9
|
+
import subprocess
|
|
10
|
+
|
|
9
11
|
if (not filename):
|
|
10
12
|
dt = datetime.datetime.now()
|
|
11
13
|
filename = dt.strftime("%Y-%m-%d %H.%M.%S") + " screen"
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import sys
|
|
3
|
-
import json
|
|
4
|
-
import importlib.resources
|
|
5
|
-
|
|
6
|
-
from .maze import Maze, Player
|
|
7
|
-
from .bee import BeeMazeType
|
|
8
|
-
from .pvz import ZombieMazeType
|
|
9
|
-
from .farmer import FarmerMazeType
|
|
10
|
-
from .harvester import HarvesterMazeType
|
|
11
|
-
from .birds import BirdsMazeType
|
|
12
|
-
from .collector import CollectorMazeType
|
|
13
|
-
|
|
14
|
-
# Get the directory of the Python file being run
|
|
15
|
-
_script_path = os.path.dirname(os.path.realpath(sys.argv[0]))
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def _find_level_file(filename):
|
|
19
|
-
"""
|
|
20
|
-
Locates a level json file, preferring a local/dev copy (e.g. one just generated by the
|
|
21
|
-
importer and not yet copied into maze/levels) over the one packaged with the maze module.
|
|
22
|
-
Returns an open()-able path/traversable, or None if not found.
|
|
23
|
-
"""
|
|
24
|
-
if not filename.endswith(".json"):
|
|
25
|
-
filename = f"{filename}.json"
|
|
26
|
-
|
|
27
|
-
for candidate in (
|
|
28
|
-
filename,
|
|
29
|
-
os.path.join(_script_path, filename),
|
|
30
|
-
os.path.join(_script_path, "levels", filename),
|
|
31
|
-
):
|
|
32
|
-
if os.path.exists(candidate):
|
|
33
|
-
return candidate
|
|
34
|
-
|
|
35
|
-
packaged = importlib.resources.files("maze.levels").joinpath(os.path.basename(filename))
|
|
36
|
-
if packaged.is_file():
|
|
37
|
-
return packaged
|
|
38
|
-
|
|
39
|
-
return None
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class Puzzle:
|
|
43
|
-
mazeTypes = {
|
|
44
|
-
"bee": BeeMazeType(),
|
|
45
|
-
"pvz": ZombieMazeType(),
|
|
46
|
-
"farmer": FarmerMazeType(),
|
|
47
|
-
"harvester": HarvesterMazeType(),
|
|
48
|
-
"birds": BirdsMazeType(),
|
|
49
|
-
"collector": CollectorMazeType()
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
@staticmethod
|
|
53
|
-
def from_file(filename):
|
|
54
|
-
resolved = _find_level_file(filename)
|
|
55
|
-
if resolved is None:
|
|
56
|
-
raise TypeError("Unable to find file for level " + filename)
|
|
57
|
-
|
|
58
|
-
# `resolved` is either a plain path (str) or an importlib.resources Traversable
|
|
59
|
-
opener = resolved.open if hasattr(resolved, "open") else lambda: open(resolved)
|
|
60
|
-
with opener() as fp:
|
|
61
|
-
level_json = json.load(fp)
|
|
62
|
-
|
|
63
|
-
game_id = level_json.get("game_id")
|
|
64
|
-
if game_id and int(game_id) == 25:
|
|
65
|
-
levelProps = level_json['properties']
|
|
66
|
-
|
|
67
|
-
mazeType = Puzzle.mazeTypes[levelProps["skin"]]
|
|
68
|
-
|
|
69
|
-
return Maze(level_json, mazeType)
|
|
70
|
-
else:
|
|
71
|
-
print(f"Unknown game_id: {game_id}")
|
|
72
|
-
|
|
73
|
-
@staticmethod
|
|
74
|
-
def done():
|
|
75
|
-
Maze.instance.done()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|