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)
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()
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