def dungeon_game():
    """
    Function launch the dungeon game
    Returns:
        none
    """
    size_of_map = int(input("Enter size of map"))
    game_map = Map_generator.generate_map([size_of_map] * 2, 0.1, 0.05)

    player_position = Map_generator.generate_coordinates(game_map)
    direction_map = {'up': [1, 0], 'down': [-1, 0], 'left': [0, -1], 'right': [0, 1]}

    game_over = False
    player_win = False

    while not game_over:
        logger.info("Your position:" + str(player_position))
        Warning_generator.generate_warning(game_map, player_position, 1)
        Warning_generator.generate_warning(game_map, player_position, 2)

        game_input = input("Enter direction")
        if game_input == "save":
            save(game_map, player_position)
            logger.info("Game is saved")
            continue
        elif game_input == "load":
            game_map, player_position = load()
            logger.info("Game is loaded")
            continue
        else:
            direction = direction_map[game_input]

        player_position[0] += direction[0]
        player_position[1] += direction[1]

        player_position[0] = max(0, min(player_position[0], size_of_map - 1))
        player_position[1] = max(0, min(player_position[1], size_of_map - 1))

        if game_map[player_position[0]][player_position[1]] == 1:
            game_over = True

        elif game_map[player_position[0]][player_position[1]] == 2:

            game_over = True
            player_win = True

    if player_win:
        print("You won!!!")
    else:
        print("You lost.")
    print(game_map)
示例#2
0
 def __init__(self,
              name,
              short_name,
              difficalty=0,
              map_type='rectangular',
              stairs=[]):
     self.name = name
     self.short_name = short_name
     self.width = Config.screen_width
     self.height = Config.screen_height
     self.difficalty = difficalty
     # Двумерный список из символов - заготовка карты
     self.titles = Map_generator.get_map()
     self.transparent_map = self.get_transparent_map()
     self.mob_list = []
     self.icons_buffer = self.get_icons_buffer()
示例#3
0
def init():
    #grille_vide contient juste ce qui ne change pas durant l'exploration de l'étage
    dn.grille_vide, dn.grille = mg.creer_etage(dn.width_map, dn.height_map)

    #murs est une carte indiquant les murs, il sert à tracer la mini-map
    dn.murs = np.zeros((2 * (dn.width_map + 1), 2 * (dn.height_map + 1)))
    for i in range(dn.width_map):
        for j in range(dn.height_map):
            if dn.grille[3 + i, 3 + j]:
                if not dn.grille[2 + i, 3 + j]:
                    dn.murs[2 * i][1 + 2 * j] = 1
                if not dn.grille[4 + i, 3 + j]:
                    dn.murs[2 + 2 * i][1 + 2 * j] = 1
                if not dn.grille[3 + i, 2 + j]:
                    dn.murs[1 + 2 * i][2 * j] = 1
                if not dn.grille[3 + i, 4 + j]:
                    dn.murs[1 + 2 * i][2 + 2 * j] = 1

    #vus est une carte des zones entrées au moins une fois dans le champs de vision. Il sert à savoir quelle partie de la mini-map révéler
    dn.vus = np.zeros(
        (2 * (dn.width_map + 1 + 3), 2 * (dn.height_map + 1 + 3)))

    dn.joueur["direction"] = "down"
    dn.joueur["etat"] = "still"
import Map_generator
import Game_loop

field_size = 10

while (True):
    player_answer = input("Start the Game? y/n \n").lower()

    if player_answer == 'y':
        game_map = Map_generator.generate_map(field_size)

        Game_loop.player_position = Map_generator.init_free_cell(
            game_map, Map_generator.player)
        Game_loop.loop(game_map)

        print(f'at {Game_loop.player_position}')
        print(f'Treasures -> {Map_generator.treasure}')
        print(f'Traps -> {Map_generator.trap}')
        for line in game_map[::-1]:
            print(*line, '\n')
    else:
        break