# Do not import any modules. If you do, the tester may reject your submission.
# Constants for the contents of the maze.
# The visual representation of a wall.
WALL = '#'
# The visual representation of a hallway.
HALL = '.'
# The visual representation of a brussels sprout.
SPROUT = '@'
# Constants for the directions. Use these to make Rats move.
# The left direction.
LEFT = -1
# The right direction.
RIGHT = 1
# No change in direction.
NO_CHANGE = 0
# The up direction.
UP = -1
# The down direction.
DOWN = 1
# The letters for rat_1 and rat_2 in the maze.
RAT_1_CHAR = 'J'
RAT_2_CHAR = 'P'
class Rat:
""" A rat caught in a maze. """
# Write your Rat methods here.
def __init__(self, symbol, row, col):
"""(Rat, str, int, int) -> NoneType"""
self.symbol = symbol
self.row = row
self.col = col
self.num_sprouts_eaten = 0
def set_location(self, row, col):
"""(Rat, int, int) -> NoneType"""
self.row = row
self.col = col
def eat_sprout(self):
"""(Rat) -> NoneType"""
self.num_sprouts_eaten = self.num_sprouts_eaten + 1
def __str__(self):
"""(Rat) -> str"""
return self.symbol + ' at ('+ self.row +', '+ self.col +') ate ' + self.num_sprouts_eaten + ' sprouts.'
class Maze:
""" A 2D maze. """
def __init__(self, maze, rat_1, rat_2):
"""(Maze, list of list of str, Rat, Rat) -> NoneType"""
self.maze = maze
self.rat_1 = rat_1
self.rat_2 = rat_2
self.num_sprouts_left = 0
for i in range(maze):
for j in range(len(maze[i])):
if (maze[i][j] == SPROUT):
self.num_sprouts_left = self.num_sprouts_left + 1
def is_wall(self, row, col):
"""(Maze, int, int) -> bool"""
return maze[row][col] == WALL
def get_character(self, row, col):
"""(Maze, int, int) -> str"""
return maze[row][col]
def move(self, rat, vDir, hDir):
"""(Maze, Rat, int, int) -> bool"""
row = rat.row + vDir
col = rat.col + hDir
if (maze[row][col] == WALL):
return False
else:
if (maze[row][col] == SPROUT):
rat.eat_sprout()
maze[row][col] = HALL
self.num_sprouts_left = self.num_sprouts_left - 1
rat.set_location(row, col)
return True
def __str__(self):
"""(Maze) -> str"""
maze[rat_1.row][rat_1.col] == rat_1.symbol
maze[rat_2.row][rat_2.col] == rat_2.symbol
result = str(maze) + str(rat_1) + str(rat_2)
maze[rat_1.row][rat_1.col] == HALL
maze[rat_2.row][rat_2.col] == HALL
return result
# Write your Maze methods here.