Quantcast
Channel: 懒得折腾
Viewing all articles
Browse latest Browse all 764

Learn to Program: Crafting Quality Code

$
0
0
# 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.


Viewing all articles
Browse latest Browse all 764

Trending Articles