def charger_niveau(joueur, caisses, cibles, murs, path): ''' Fonction permettant de charger depuis un fichier.txt et de remplir les différentes listes permettant le fonctionnement du jeu (joueur, caisses, murs, cibles) :param joueur: liste des personnages :param caisses: liste des caisses :param cibles: liste des cibles :param murs: liste des murs :param path: Chemin du fichier.txt :return: ''' listeEndroitsVides: list = [] fichier = open(path, 'r') lignes: list = fichier.readlines() cptLigne: int = 0 for ligne in lignes: y: int = int(Y_PREMIERE_CASE + DISTANCE_ENTRE_CASE / 2 + cptLigne * 32) cptColonnes: int = 0 for caractere in ligne: x: int = int(X_PREMIERE_CASE + DISTANCE_ENTRE_CASE / 2 + cptColonnes * 32) if caractere == '#': murs.append(creer_mur(x, y)) elif caractere == '@': joueur.append(creer_personnage(x, y)) elif caractere == '.': cibles.append(creer_cible(x, y)) elif caractere == '$': caisses.append(creer_caisse(x, y)) elif caractere == '-': listeEndroitsVides.append(creer_case_vide(x, y)) cptColonnes += 1 cptLigne += 1 fichier.close()
def charger_niveau(joueur: list, caisses: list, cibles: list, murs: list, path: str): """ Fonction permettant de charger depuis un fichier.txt et de remplir les différentes listes permettant le fonctionnement du jeu (joueur, caisses, murs, cibles) :param joueur: liste des personnages :param caisses: liste des caisses :param cibles: liste des cibles :param murs: liste des murs :param path: chemin du fichier.txt :return: """ # Lecture des lignes du fichier et stockage dans une matrice 2D x:y telle que 9:6 mx = [] cases_vides = [] x = y = 0 with open(path, 'r') as file_level: mx = file_level.readlines() mx = [row.rstrip('\n') for row in mx] # Recherche les differents éléments dans la matrice et crée l'image correspondante sur le board selon les fonctions outils données for i in range(len(mx)): x = int(X_PREMIERE_CASE + DISTANCE_ENTRE_CASE / 2 + i * 32) for j in range(len(mx[i])): y = int(Y_PREMIERE_CASE + DISTANCE_ENTRE_CASE / 2 + j *32) if mx[i][j] == '#': # Mur murs.append(creer_mur(x,y)) elif mx[i][j] == '-': # Case_vide cases_vides.append(creer_case_vide(x,y)) elif mx[i][j] == '.': # Cible cibles.append(creer_cible(x,y)) elif mx[i][j] == '$': # Caisse caisses.append(creer_caisse(x,y)) elif mx[i][j] == '@': # Personnage joueur.append(creer_personnage(x,y))
def charger_niveau(carte: list, joueur: list, minotaures: list, sorties: list, murs: list, path: str): """ Fonction permettant de charger depuis un fichier.txt et de remplir les différentes listes permettant le fonctionnement du jeu (joueur, minotaures, murs, sorties) :param carte: liste de liste comportant toutes les entités (joueur, minotaures, murs, sorties). C'est la grille du jeu. :param joueur: liste contenant le joueur :param minotaures: liste des minotaures :param sorties: liste des sorties :param murs: liste des murs :param path: chemin du fichier.txt """ global joueur_mort joueur_mort = False # Ouverture du fichier. (level1,2,3.txt) with open(path, "r") as level: # Initialisation des variables nécessaires x: int = 0 y: int = 0 count: int = 0 # Recupueré toutes les lignes differentes grace au readline. texte = level.read() lignes = texte.split() # Prendre les lignes une par une for ligne in lignes: carte.append(list(ligne)) # prendre les characteres 1 par 1. for char in ligne: if char == "#": murs.append(creer_mur(x, y)) elif char == "$": minotaures.append(creer_minotaure(x, y)) elif char == "@": joueur.append((creer_personnage(x, y))) elif char == ".": sorties.append((creer_sortie(x, y))) x += 1 count += 1 # Incrémenter Y et remettre X a 0 quand on arrive a la fin de la ligne if count % len(ligne) == 0: x = 0 y += 1
def charger_niveau(joueur, caisses, cibles, murs, path): ''' Fonction permettant de charger depuis un fichier.txt et de remplir les différentes listes permettant le fonctionnement du jeu (joueur, caisses, murs, cibles) :param joueur: liste des personnages :param caisses: liste des caisses :param cibles: liste des cibles :param murs: liste des murs :param path: Chemin du fichier.txt :return: ''' # Vérification des paramètres if not os.path.isfile(path): return None elif joueur is None or caisses is None or cibles is None or murs is None: return None # Variables de départ c_dpt_x: int = DISTANCE_ENTRE_CASE // 2 c_dpt_y: int = DISTANCE_ENTRE_CASE // 2 # Déclaration de la coordonnée Y coord_y: int = Y_PREMIERE_CASE + c_dpt_y # Overture du fichier en mode lecture with open(path, 'r') as filin: # Lecture de chaque ligne du fichier for ligne in filin: # Calibrage des coordonnees X et Y coord_x = X_PREMIERE_CASE + c_dpt_x # Lecture et création de chaque élément de la ligne for element in ligne: if element == '#': murs.append(creer_mur(coord_x, coord_y)) elif element == '.': cibles.append(creer_cible(coord_x, coord_y)) elif element == '$': caisses.append(creer_caisse(coord_x, coord_y)) elif element == '@': joueur.append(creer_personnage(coord_x, coord_y)) # Calibrage de la coordonnée X à chaque intéraction coord_x = coord_x + DISTANCE_ENTRE_CASE # Calibrage de la coordonée Y a chaque intéraction coord_y = coord_y + DISTANCE_ENTRE_CASE
def charger_niveau(joueur, caisses, cibles, murs, path): ''' Fonction permettant de charger depuis un fichier.txt et de remplir les différentes listes permettant le fonctionnement du jeu (joueur, caisses, murs, cibles) :param joueur: liste des personnages :param caisses: liste des caisses :param cibles: liste des cibles :param murs: liste des murs :param path: Chemin du fichier.txt :return: ''' cpt_x: int = 0 cpt_y: int = 0 with open(path, "r") as filin: lignes: list = filin.readlines() for i in lignes: for j in i: if j == "#": # faire deux boucles imbriqués, 20, 20 est la position initiale un for pour x et un for pour y # 32 étant l'espace entre deu éléments. 20 + 0 * 32 /// 20 étant l'espace entre le fichier texte et le premier bloc # du coup 20 et 32 reste il n'y a juste le 0 qui va varier murs.append(creer_mur(X_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_x), Y_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_y))) elif j == ".": cibles.append(creer_cible(X_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_x), Y_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_y))) elif j == "$": caisses.append(creer_caisse(X_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_x), Y_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_y))) elif j == "@": joueur.append(creer_personnage(X_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_x), Y_PREMIERE_CASE + (DISTANCE_ENTRE_CASE * cpt_y))) cpt_x += 1 cpt_y += 1 cpt_x = 0