예제 #1
0
def test_push_crate_to_crate():
    maze = parse_grid("*oo")
    move(maze, RIGHT)
    assert maze == [['*', 'o', 'o']]
예제 #2
0
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
예제 #3
0
def test_push_crate_to_wall():
    maze = parse_grid("*o#")
    move(maze, RIGHT)
    assert maze[0] == ['*', 'o', '#']
예제 #4
0
def test_push_crate_to_crate():
    maze = parse_grid("*oo")
    move(maze, RIGHT)
    assert maze == [['*', 'o', 'o']]
예제 #5
0
def bf_crate():
    """A single crate that can be pushed back and forth"""
    maze = parse_grid(""".*o..\n.....""")
    return maze
예제 #6
0
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] == '*'
예제 #7
0
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
예제 #8
0
 def test_push_crate_to_crate(self):
     """Test_push_crate_to_crate."""
     maze = parse_grid('*oo')
     move(maze, RIGHT)
     assert maze == [['*', 'o', 'o']]
예제 #9
0
def level(request):
    return parse_grid(request.param)
예제 #10
0
def test_move_to_none():
    """direction=None generates an Exception"""
    maze = parse_grid(LEVEL)
    with pytest.raises(TypeError):
        move(maze, None)
예제 #11
0
 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]
예제 #12
0
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
예제 #13
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'
예제 #14
0
def test_move_to_none():
    """direction=None generates an Exception"""
    maze = parse_grid(LEVEL)
    with pytest.raises(TypeError):
        move(maze, None)
예제 #15
0
def test_push_crate_to_exit():
    maze = parse_grid("*ox")
    with pytest.raises(NotImplementedError):
        move(maze, RIGHT)
예제 #16
0
def test_push_crate_to_crate():
    maze = parse_grid('*oo')
    move(maze, RIGHT)
    assert maze[0] == ['*', 'o', 'o']
예제 #17
0
def bf_crate():
    """A single crate that can be pushed back and forth"""
    maze = parse_grid(""".*o..\n.....""")
    return maze
예제 #18
0
파일: moves.py 프로젝트: krother/maze_run
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')
예제 #19
0

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)
예제 #20
0
    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')
예제 #21
0
def test_push_crate_to_wall():
    maze = parse_grid("*o#")
    move(maze, RIGHT)
    assert maze[0] == ['*', 'o', '#']

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)
예제 #23
0
def test_push_crate_to_exit():
    maze = parse_grid("*ox")
    with pytest.raises(NotImplementedError):
        move(maze, RIGHT)
예제 #24
0
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
예제 #25
0
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] == '*'
예제 #26
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'