Maze BuilderΒΆ

This interactive tool allows you to create custom mazes for PyRat. Use the controls below to build your maze, then save it as a file to use in your games.

Maze: 5 rows Γ— 5 columns | Cells: 25 | Current tool: Hole (click to toggle)

Using the Maze BuilderΒΆ

Tools:

  • Hole: Click on a cell to toggle it between a valid cell (light gray) and a hole (dark). Holes are not part of the maze.

  • Wall: Click on the edges between cells to add or remove walls. Walls block movement between adjacent cells.

  • Mud: Click on edges between cells to add mud. Set the mud value first (the number of turns required to cross). Click again to remove mud.

  • Cheese: Click on cells to place or remove cheese. Cheese positions will be saved with your maze.

Maze Controls:

  • Use the + and βˆ’ buttons around the maze to add or remove rows and columns.

  • Check Show indices to display the cell index numbers (useful for debugging).

Save/Load:

  • Click Save to download your maze as a file.

  • Click Load to import a previously saved maze.

Using the Maze in PyRatΒΆ

Once you’ve saved your maze, you can load it in your PyRat game. The saved file contains a Python tuple (maze_dict, cheese_list) with the maze structure and cheese positions:

# Import the necessary modules
import ast
from pyrat import Game

# Load the maze and cheese from saved file
with open("pyrat_maze.py", "r") as f:
    maze_dict, cheese_list = ast.literal_eval(f.read())

# Create a game with the custom maze and cheese
game = Game(fixed_maze=maze_dict, fixed_cheese=cheese_list)

You can also create a MazeFromDict object if you prefer. This has the advantages of validating the maze structure and providing additional methods.

# Import the necessary modules
import ast
from pyrat import Game, MazeFromDict

# Load the maze and cheese from saved file
with open("pyrat_maze.py", "r") as f:
    maze_dict, cheese_list = ast.literal_eval(f.read())

# Create a MazeFromDict object
maze = MazeFromDict(maze_dict)

# Create a game with the maze object and cheese
game = Game(fixed_maze=maze, fixed_cheese=cheese_list)

Remarks:

  • When starting a game, players are added before the cheese. Therefore, make sure that fixed cheese positions do not overlap with player starting positions.

  • If you only want to use this tool to design a maze, just remove the fixed_cheese parameter when creating the Game object. Cheese will then be placed randomly by the game.