Exemplo n.º 1
0
def mouvement(direction: str, can, joueur: list, murs: list, caisses: list, liste_image: list):
    """
    Fonction permettant de définir les cases de destinations (il y en a 2 si le joueur pousse une caisse) selon la
    direction choisie.
    :param direction: Direction dans laquelle le joueur se déplace (droite, gauche, haut, bas)
    :param can: Canvas (ignorez son fonctionnement), utile uniquement pour créer_image()
    :param joueur: liste des joueurs
    :param murs: liste des murs

    :param caisses: liste des caisses
    :param liste_image: liste des images (murs, caisses etc...) détaillée dans l'énoncé
    :return:
    """

    if direction == 'droite':        
        xy_coord = creer_case_vide(coordonnee_x(joueur[0]) + 32, coordonnee_y(joueur[0]))
        xy_coord_suiv = creer_case_vide(coordonnee_x(joueur[0]) + 64, coordonnee_y(joueur[0]))

    elif direction == 'gauche':
        xy_coord = creer_case_vide(coordonnee_x(joueur[0] - 32), coordonnee_y(joueur[0]))
        xy_coord_suiv = creer_case_vide(coordonnee_x(joueur[0]) - 64, coordonnee_y(joueur[0]))

    elif direction == 'haut':
        xy_coord = creer_case_vide(coordonnee_x(joueur[0]), coordonnee_y(joueur[0]) - 32)
        xy_coord_suiv = creer_case_vide(coordonnee_x(joueur[0]), coordonnee_y(joueur[0])-64)

    else: # bas
        xy_coord = creer_case_vide(coordonnee_x(joueur[0]), coordonnee_y(joueur[0]) + 32)
        xy_coord_suiv = creer_case_vide(coordonnee_x(joueur[0]), coordonnee_y(joueur[0]) + 64)

    old_caisse = xy_coord # xy coord est un objet de type Case vide avec x,y correspondant

    effectuer_mouvement(xy_coord, xy_coord_suiv, old_caisse, caisses, murs, joueur, can, coordonnee_x(xy_coord_suiv), coordonnee_y(xy_coord_suiv), coordonnee_x(xy_coord), coordonnee_y(xy_coord), liste_image)
Exemplo n.º 2
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.º 3
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.º 4
0
def mouvement(direction, can, joueur, murs, caisses, liste_image):
    '''
    Fonction permettant de définir les cases de destinations (il y en a 2 si le joueur pousse une caisse) selon la
    direction choisie.
    :param direction: Direction dans laquelle le joueur se déplace (droite, gauche, haut, bas)
    :param can: Canvas (ignorez son fonctionnement), utile uniquement pour créer_image()
    :param joueur: liste des joueurs
    :param murs: liste des murs
    :param caisses: liste des caisses
    :param liste_image: liste des images (murs, caisses etc...) détaillée dans l'énoncé
    :return:
    '''
    
    # il n'y a qu'une seule liste à la fois qui bouge, soit x, soit y, a gauche et droite c'est y et haut bas = x
    # Lorsqu'on fait un mouvement, on crée une case vide aux coordonnées de la destination
    if direction == "gauche":
        coordonnee_destination = creer_case_vide(coordonnee_x(joueur[0]) - DISTANCE_ENTRE_CASE, coordonnee_y(joueur[0]))
        coordonnee_case_suivante = creer_case_vide(coordonnee_x(joueur[0]) - (DISTANCE_ENTRE_CASE * 2),
                                                   coordonnee_y(joueur[0]))

    if direction == "droite":
        coordonnee_destination = creer_case_vide(coordonnee_x(joueur[0]) + DISTANCE_ENTRE_CASE, coordonnee_y(joueur[0]))
        coordonnee_case_suivante = creer_case_vide(coordonnee_x(joueur[0]) + (DISTANCE_ENTRE_CASE * 2),
                                                   coordonnee_y(joueur[0]))

    if direction == "haut":
        coordonnee_destination = creer_case_vide(coordonnee_x(joueur[0]), coordonnee_y(joueur[0]) - DISTANCE_ENTRE_CASE)
        coordonnee_case_suivante = creer_case_vide(coordonnee_x(joueur[0]),
                                                   coordonnee_y(joueur[0]) - (DISTANCE_ENTRE_CASE * 2))

    if direction == "bas":
        coordonnee_destination = creer_case_vide(coordonnee_x(joueur[0]), coordonnee_y(joueur[0]) + DISTANCE_ENTRE_CASE)
        coordonnee_case_suivante = creer_case_vide(coordonnee_x(joueur[0]),
                                                   coordonnee_y(joueur[0]) + (DISTANCE_ENTRE_CASE * 2))
    
    # on crée la variable ancienne_caisse que l'on va utiliser dans la fonction effectuer_mouvement
    # cela va permettre de conserver les coordonées afin de pouvoir supprimer l'ancienne caisse
    ancienne_caisse = coordonnee_destination
    # on crée les variables deplace pour les utilisé dans la fonction effectuer_mouvement
    deplace_joueur_x = coordonnee_x(coordonnee_destination)
    deplace_joueur_y = coordonnee_y(coordonnee_destination)
    deplace_caisse_x = coordonnee_x(coordonnee_case_suivante)
    deplace_caisse_y = coordonnee_y(coordonnee_case_suivante)
    
    # on appele la fonction effectuer_mouvement ici car elle est appelée par mouvement ( selon la direction ) 
    effectuer_mouvement(coordonnee_destination, coordonnee_case_suivante, ancienne_caisse, caisses, murs, joueur, can,
                        deplace_caisse_x, deplace_caisse_y, deplace_joueur_x, deplace_joueur_y, liste_image)
Exemplo n.º 5
0
def definir_mouvement(direction: str, can, joueur: list, murs: list, minotaures: list, sorties: list, carte: list,
                      liste_image: list):
    """
    Fonction permettant de définir la case de destination selon la direction choisie.
    :param direction: Direction dans laquelle le joueur se déplace (droite, gauche, haut, bas)
    :param can: Canvas (ignorez son fonctionnement), utile uniquement pour créer_image()
    :param joueur: Liste des joueurs
    :param murs: Liste des murs
    :param minotaures: Liste des minotaures
    :param sorties: Liste des sorties
    :param carte: La liste de liste formant la grille du jeu
    :param liste_image: Liste contenant les références sur les images
    :return:
    """

    # Déclaration des ancienne coordonées du joueur.
    old_x: int = joueur[0].x
    old_y: int = joueur[0].y

    # Déclaration des nouvelles coordonées du joueur.
    new_x: int = 0
    new_y: int = 0

    # Test des directions + ajout des nouvelles coordonés
    if direction == "gauche":
        new_x = old_x - 1
        new_y = old_y
    if direction == "droite":
        new_x = old_x + 1
        new_y = old_y
    if direction == "haut":
        new_y = old_y - 1
        new_x = old_x
    if direction == "bas":
        new_y = old_y + 1
        new_x = old_x

    # création de la variable destination (nécessaire pour effectuer_mouvement)
    coordonnee_destination = creer_case_vide(new_x, new_y)
    effectuer_mouvement(coordonnee_destination, minotaures, murs, joueur, sorties, carte, can, liste_image, new_x,
                        new_y)

    # Remplacer l'ancienne image par une case vide (6 = image du sol)
    creer_image(can, old_x, old_y, liste_image[6])
Exemplo n.º 6
0
def mouvement(direction, can, joueur, murs, caisses, liste_image):
    '''
    Fonction permettant de définir les cases de destinations (il y en a 2 si le joueur pousse une caisse) selon la
    direction choisie.
    :param direction: Direction dans laquelle le joueur se déplace (droite, gauche, haut, bas)
    :param can: Canvas (ignorez son fonctionnement), utile uniquement pour créer_image()
    :param joueur: liste des joueurs
    :param murs: liste des murs
    :param caisses: liste des caisses
    :param liste_image: liste des images (murs, caisses etc...) détaillée dans l'énoncé
    :return:
    '''
    coordonnee_dest = None
    if direction == 'droite':
        coordonnee_dest = creer_case_vide(
            coordonnee_x(joueur[0]) + 32, coordonnee_y(joueur[0]))
        coordonnee_dest2 = creer_case_vide(
            coordonnee_x(joueur[0]) + 64, coordonnee_y(joueur[0]))
    elif direction == 'gauche':
        coordonnee_dest = creer_case_vide(
            coordonnee_x(joueur[0]) - 32, coordonnee_y(joueur[0]))
        coordonnee_dest2 = creer_case_vide(
            coordonnee_x(joueur[0]) - 64, coordonnee_y(joueur[0]))
    elif direction == 'haut':
        coordonnee_dest = creer_case_vide(coordonnee_x(joueur[0]),
                                          coordonnee_y(joueur[0]) - 32)
        coordonnee_dest2 = creer_case_vide(coordonnee_x(joueur[0]),
                                           coordonnee_y(joueur[0]) - 64)
    else:
        coordonnee_dest = creer_case_vide(coordonnee_x(joueur[0]),
                                          coordonnee_y(joueur[0]) + 32)
        coordonnee_dest2 = creer_case_vide(coordonnee_x(joueur[0]),
                                           coordonnee_y(joueur[0]) + 64)

    ancienne_caisse = coordonnee_dest
    effectuer_mouvement(coordonnee_dest, coordonnee_dest2, ancienne_caisse,
                        caisses, murs, joueur, can,
                        coordonnee_x(coordonnee_dest2),
                        coordonnee_y(coordonnee_dest2),
                        coordonnee_x(coordonnee_dest),
                        coordonnee_y(coordonnee_dest), liste_image)
def mouvement(direction, can, joueur, murs, caisses, liste_image):
    '''
    Fonction permettant de définir les cases de destinations (il y en a 2 si le joueur pousse une caisse) selon la
    direction choisie.
    :param direction: Direction dans laquelle le joueur se déplace (droite, gauche, haut, bas)
    :param can: Canvas (ignorez son fonctionnement), utile uniquement pour créer_image()
    :param joueur: liste des joueurs
    :param murs: liste des murs
    :param caisses: liste des caisses
    :param liste_image: liste des images (murs, caisses etc...) détaillée dans l'énoncé
    :return:
    '''
    # Vérification des paramètres
    if direction is None or joueur is None or murs is None or caisses is None or liste_image is None:
        return None

    # Position du joueur
    position_x_joueur: int = coordonnee_x(joueur[0])
    position_y_joueur: int = coordonnee_y(joueur[0])

    if direction == "droite":  # Si l'utilisateur clic à droite
        effectuer_mouvement(
            creer_case_vide(position_x_joueur + DISTANCE_ENTRE_CASE,
                            position_y_joueur),
            creer_case_vide(position_x_joueur + 2 * DISTANCE_ENTRE_CASE,
                            position_y_joueur),
            creer_caisse(position_x_joueur + DISTANCE_ENTRE_CASE,
                         position_y_joueur), caisses, murs, joueur, can,
            (position_x_joueur + 2 * DISTANCE_ENTRE_CASE), position_y_joueur,
            (position_x_joueur + DISTANCE_ENTRE_CASE), position_y_joueur,
            liste_image)
    elif direction == "gauche":  # Si l'utilisateur clic à gauche
        effectuer_mouvement(
            creer_case_vide(position_x_joueur - DISTANCE_ENTRE_CASE,
                            position_y_joueur),
            creer_case_vide(position_x_joueur - 2 * DISTANCE_ENTRE_CASE,
                            position_y_joueur),
            creer_caisse(position_x_joueur - DISTANCE_ENTRE_CASE,
                         position_y_joueur), caisses, murs, joueur, can,
            (position_x_joueur - 2 * DISTANCE_ENTRE_CASE), position_y_joueur,
            (position_x_joueur - DISTANCE_ENTRE_CASE), position_y_joueur,
            liste_image)
    elif direction == "haut":  # Si l'utilisateur clic en haut
        effectuer_mouvement(
            creer_case_vide(position_x_joueur,
                            position_y_joueur - DISTANCE_ENTRE_CASE),
            creer_case_vide(position_x_joueur,
                            position_y_joueur - 2 * DISTANCE_ENTRE_CASE),
            creer_caisse(position_x_joueur,
                         position_y_joueur - DISTANCE_ENTRE_CASE), caisses,
            murs, joueur, can, position_x_joueur,
            (position_y_joueur - 2 * DISTANCE_ENTRE_CASE), position_x_joueur,
            (position_y_joueur - DISTANCE_ENTRE_CASE), liste_image)
    elif direction == "bas":  # Si l'utilisateur clic en bas
        effectuer_mouvement(
            creer_case_vide(position_x_joueur,
                            position_y_joueur + DISTANCE_ENTRE_CASE),
            creer_case_vide(position_x_joueur,
                            position_y_joueur + 2 * DISTANCE_ENTRE_CASE),
            creer_caisse(position_x_joueur,
                         position_y_joueur + DISTANCE_ENTRE_CASE), caisses,
            murs, joueur, can, position_x_joueur,
            (position_y_joueur + 2 * DISTANCE_ENTRE_CASE), position_x_joueur,
            (position_y_joueur + DISTANCE_ENTRE_CASE), liste_image)