Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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
Exemplo n.º 5
0
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