コード例 #1
0
def is_treasure_around(player_pos):
    logger.debug('Checking for treasures')

    neighbors = get_neighbor_cells(player_pos)
    is_treasure_around = any(world[neighbor[1]][neighbor[0]] == 'Treasure'
                             for neighbor in neighbors)
    return is_treasure_around
コード例 #2
0
def create_world(size):
    global world_size
    global world

    world_size = size
    world = map_generator.generate(size)

    logger.debug('World was created')
コード例 #3
0
def get_neighbor_cells(player_pos):
    logger.debug('Searching for neighbor cells')
    neighbors = []
    for dx in [-1, 0, 1]:
        for dy in [-1, 0, 1]:
            if (dx, dy) != (0, 0):
                neighbor_pos = [player_pos[0] + dx, player_pos[1] + dy]
                if is_inside_world(neighbor_pos):
                    neighbors.append(neighbor_pos)

    logger.debug('Found {} neighbor cells'.format(len(neighbors)))
    return neighbors
コード例 #4
0
def print_world(player_pos):
    logger.debug('Printing world')

    print('You at: {}'.format(player_pos))
    for y, row in enumerate(world):
        for x, cell in enumerate(row):
            if player_pos[0] == x and player_pos[1] == y:
                cell = 'Player'
            print('{} '.format(cell_repr[cell]), end='')
        print()

    logger.debug('World was printed')
コード例 #5
0
def load():
    global world
    global world_size

    logger.debug('Try to load game')
    try:
        player_pos, world = saver.load(SAVE_DIR)
    except FileNotFoundError:
        raise RuntimeError('No saved games.')

    world_size = len(world)
    logger.debug('Game loaded successfully')
    return player_pos
コード例 #6
0
def spawn_player():
    logger.debug('Attempting to spawn player')
    player_pos = [
        random.choice(range(world_size)),
        random.choice(range(world_size))
    ]

    while world[player_pos[1]][player_pos[0]] is not None:
        player_pos = [
            random.choice(range(world_size)),
            random.choice(range(world_size))
        ]
        logger.debug('Player spawn retrying')

    logger.debug('Player spawned')
    return player_pos
コード例 #7
0
def generate(map_size):
    new_map = [[None] * map_size for _ in range(map_size)]
    logger.debug('Empty map generated')

    for i in range(map_size**2 // 10):
        x = random.choice(range(map_size))
        y = random.choice(range(map_size))
        new_map[x][y] = 'Trap'
    logger.debug('Traps was placed')

    for i in range(map_size**2 // 20):
        x = random.choice(range(map_size))
        y = random.choice(range(map_size))
        new_map[x][y] = 'Treasure'
    logger.debug('Treasures was placed')

    return new_map
コード例 #8
0
def move_player(player_pos, direction):
    logger.debug('Player tries to move')
    new_pos = [player_pos[0] + direction[0], player_pos[1] + direction[1]]
    if is_inside_world(new_pos):
        player_pos[:] = new_pos
        logger.debug('Player successfully moves')
コード例 #9
0
def is_found_treasure(player_pos):
    logger.debug('Checking winning condition')
    return world[player_pos[1]][player_pos[0]] == 'Treasure'
コード例 #10
0
def is_trapped(player_pos):
    logger.debug('Checking game over condition')
    return world[player_pos[1]][player_pos[0]] == 'Trap'
コード例 #11
0
def save(player_pos):
    logger.debug('Try to save game')
    saver.save([player_pos, world], SAVE_DIR)
    logger.debug('Game saved successfully')