Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme de création de labyrinthe

    3 août 2019 à 17:37:16

    Bonjour à vous,

    Je me suis lancé dans la programmation(en python) d'un algorithme de création de labyrinthe, qui fonctionne par fusion à aléatoire de chemins. Mon problème se situe dans la redéfinition des valeurs données aux cases lorsque celle-ci s'ouvrent. La redéfinition ne s'applique pas à toutes les cases, et ils subsistent des numéros qui auraient dû disparaître.

    from random import random, choice
    
    
    
    
    m = 4# nb de colonnes
    n = 4# nb de lignes
    
    case = []
    case2= []
    direction = [1,2,3,4]#1 pour en haut, 2 pour en bas, 3 pour gauche, 4 pour droite
    
    
    for i in range(m*n):
        case.append(i)
    
    for i in range(m*n):
        case2.append(i)
    
    
    def labyrinthe(m,n):
    
        nb_mur = 0
    
        #Le nombre de murs ouverts d'un labyrinthe vaut n*m-1
        while nb_mur < m*n -1 :
    
            #choisi une case dans la liste_case
            choix_case = choice(case2)
    
            #choisi le côté de l'ouverture de la case(haut,bas,gauche,droite)
            ouverture= choice(direction)
    
            #fusion de cases pour le haut
            if ouverture == 1:
    
                #Cases interdites pour ouvrir vers le haut, s'il y a sélection on retire 1 au compteur de mur
                if case[choix_case] == case[0]:
                    nb_mur -=1
                    pass
                elif case[choix_case] == case[1]:
                    nb_mur -=1
                    pass
                elif case[choix_case] ==case[2]:
                    nb_mur -=1
                    pass
                elif case[choix_case] ==case[3]:
                    nb_mur -=1
                    pass
    
                else:
                    #Définition de la variable de case_ouvrir, la case qui va être connectée selon la case choisie
                    case_ouvrir = case[choix_case - n]
                    if case[case_ouvrir] == case[choix_case]:
                        #Vérification de la zone d'ouverture
                        #Si les 2 cases ont le même numéro on ne fait rien et on passe
                        nb_mur -=1
                        pass
    
                    elif case[case_ouvrir] != case[choix_case]:
                        #Si les 2 cases n'ont pas le même numéro, alors on rédéfinit le numéro des cases
                        for i in case2:
                            if case[i] == case[case_ouvrir]:
                                case[i] = case[choix_case]
                                #print(choix_case,ouverture,case_ouvrir,case[case_ouvrir])
    
                        print(case)


    Voici, une partie de mon code(vu que je procéde de manière analogue pour le reste de mon code je ne vous en donne qu'une partie)

    Elle concerne l'ouverture de cases vers le haut.

    Je vous remercie de votre aide et du temps que vous prendrez pour moi !!!

    • Partager sur Facebook
    • Partager sur Twitter

    Algorithme de création de labyrinthe

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown