def test_push_crate_to_crate(): maze = parse_grid("*oo") move(maze, RIGHT) assert maze == [['*', 'o', 'o']]
def test_assert_examples(): maze = parse_grid(LEVEL) assert len(maze) <= 7 # comparison operator assert 1 < len(maze) < 10 # range check assert maze[0][0] == '#' and maze[1][1] == '.' # logical operators assert maze[0].count('#') == 7 # using methods
def test_push_crate_to_wall(): maze = parse_grid("*o#") move(maze, RIGHT) assert maze[0] == ['*', 'o', '#']
def bf_crate(): """A single crate that can be pushed back and forth""" maze = parse_grid(""".*o..\n.....""") return maze
def test_paths(path): """Different paths to the same spot""" maze = parse_grid(SMALL_MAZE) for direction in path: move(maze, direction) assert maze[2][3] == '*'
def test_move_crate(direction, pos, tile): """Move a crate and check a given tile""" maze = parse_grid(LEVEL) move(maze, direction) assert maze[pos[0]][pos[1]] == tile
def test_push_crate_to_crate(self): """Test_push_crate_to_crate.""" maze = parse_grid('*oo') move(maze, RIGHT) assert maze == [['*', 'o', 'o']]
def level(request): return parse_grid(request.param)
def test_move_to_none(): """direction=None generates an Exception""" maze = parse_grid(LEVEL) with pytest.raises(TypeError): move(maze, None)
def push_crate_to_wall(self, direction, retezec): """Help function to test push to wall.""" maze = parse_grid(retezec) mazepuv = maze move(maze, direction) assert maze[0] == mazepuv[0]
def move_crate(direction, plr_pos, crate_pos): """Helper function for testing crate moves""" maze = parse_grid(LEVEL) move(maze, direction) assert maze[plr_pos[0]][plr_pos[1]] == '*' assert maze[crate_pos[0]][crate_pos[1]] == 'o'
def test_push_crate_to_exit(): maze = parse_grid("*ox") with pytest.raises(NotImplementedError): move(maze, RIGHT)
def test_push_crate_to_crate(): maze = parse_grid('*oo') move(maze, RIGHT) assert maze[0] == ['*', 'o', 'o']
def get_player_pos(level, player_char='*'): """Returns a (x, y) tuple of player char on the level""" for y, row in enumerate(level): for x, char in enumerate(row): if char == player_char: return x, y def move(level, direction): """Handles moves on the level""" oldx, oldy = get_player_pos(level) newx = oldx + direction[0] newy = oldy + direction[1] if level[newy][newx] == 'x': sys.exit(0) if level[newy][newx] != '#': level[oldy][oldx] = ' ' level[newy][newx] = '*' if __name__ == '__main__': tile_img, tiles = load_tiles() maze = create_maze(12, 7) maze = parse_grid(maze) maze[1][1] = '*' for i in range(100): direction = random.choice([LEFT, RIGHT, UP, DOWN]) move(maze, direction) img = draw_grid(maze, tile_img, tiles) image.save(img, 'moved.png')
def draw(): """Displays the maze on the screen""" img = draw_grid(maze, tile_img, tiles) display.blit(img, Rect((0, 0, 384, 224)), Rect((0, 0, 384, 224))) pygame.display.update() def handle_key(key): """Handles key events in the game""" move(maze, DIRECTIONS.get(key)) draw() if __name__ == '__main__': # initialize display pygame.init() pygame.display.set_mode((800, 600)) display = pygame.display.get_surface() tile_img, tiles = load_tiles() # prepare the maze maze = parse_grid(create_maze(12, 7)) maze[1][1] = '*' maze[5][10] = 'x' # start the game draw() event_loop(handle_key)
if level[newy][newx] == 'x': sys.exit(0) if level[newy][newx] != '#': #level[oldy][oldx] = ' ' level[newy][newx] = '*' level[oldy][oldx] = ' ' if __name__ == '__main__': tile_img, tiles = load_tiles() maze = create_maze(12, 7) maze = parse_grid(maze) maze[1][1] = '*' for i in range(100): direction = random.choice([LEFT, RIGHT, UP, DOWN]) move(maze, direction) img = draw_grid(maze, tile_img, tiles) image.save(img, 'moved.png')