Labyrinthe à bille
mistoufleee
Messages postés
19
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Pour un projet, j'aimerais créer un labyrinthe à billes...
J'ai modélisé mon labyrinthe par un tableau numpy
J'aimerais d'abord modéliser un mouvement vers la droite.
J'ai donc créer un tableau contenant des 2(chemin), 0(trous) et 1(mur). Ce tableau contient également un 4 qui correspondrait à la sortie. J'ai essayé de créer ce programme pour un mouvement vers la droite, mais j'ai l'impression que ma boucle ne marche pas...
Voici mon programme:

Quelqu'un pourrait-il m'aider à trouver mon erreur ? Merci d'avance !
Pour un projet, j'aimerais créer un labyrinthe à billes...
J'ai modélisé mon labyrinthe par un tableau numpy
J'aimerais d'abord modéliser un mouvement vers la droite.
J'ai donc créer un tableau contenant des 2(chemin), 0(trous) et 1(mur). Ce tableau contient également un 4 qui correspondrait à la sortie. J'ai essayé de créer ce programme pour un mouvement vers la droite, mais j'ai l'impression que ma boucle ne marche pas...
Voici mon programme:

Quelqu'un pourrait-il m'aider à trouver mon erreur ? Merci d'avance !
2 réponses
Résumé de la discussion
Le sujet porte sur labyrinthe modélisé par un tableau numpy où 2 représente le chemin, 0 les trous, 1 les murs et 4 la sortie, avec déplacement vers la droite. La réponse conseille mémoriser position de la bille dans deux variables et de mettre à jour les indices à chaque déplacement, en remplaçant l’ancienne case par 2 et en vérifiant les voisins. Des échanges suggèrent d’utiliser une boucle while plutôt qu’un for pour suivre la progression et d’assurer des indentations correctes afin d’éviter des erreurs liées à la bille et à l’affichage. Comme précision, il est utile de clarifier les règles d’évolution du plateau : les valeurs 0, 2, 1 et 4 définissent trous, chemin, mur et sortie.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
"ma boucle ne marche pas": comment se comporte-t-elle?
merci de partager le texte du programme, en utilisant la coloration syntaxique, et pas l'image du programme.
pourrais-tu expliquer la logique de ton algorithme? je crois deviner que "5" marque la position de la bille. cependant, on dirait que tu oublies de tenir compte de cette position. ne devrais-tu pas mémoriser les coordonnées de cette position?-
-
-
Merci pour ton aide, mais j'ai essayé mais je pense qu'il y a déjà un autre problème car le programme me renvoie le tableau avec la bille en première position comme ci la boucle n'avait pas été prise en compte...?
Peut-être qu'il manque un k=k+1 quelque part pour que la boucle continue a tourner...? -
-
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
while True: deplacement = input("Quel deplacement souhaitez-vous effectuer ?") if deplacement == "Droite": dl=0 dc=1 elif deplacement == "Gauche": dl=0 dc=-1 elif deplacement == "Bas": dl=1 dc=0 elif deplacement == "Haut": dl=-1 dc=0 else : continue while A[ligne+dl,colonne+dc]==2 : A[ligne,colonne] = 2 colonne = colonne + dc ligne=ligne+dl A[ligne,colonne] = 5 print(A) if A[ligne,colonne] == 0: print("Game Over") return elif A[ligne,colonne] == 4: print("Well play") return-
Merci beaucoup de consacrer autant de temps à m'aider...
Mais je dois avouer que je ne comprends pas votre programme... que sont dl et cd ?? (les positions initiales de la bille??)
Et après le 2ème while, je ne comprends plus rien...- dl et dc représentent le déplacement choisi. par exemple, aller à gauche, c'est rester sur la même ligne (dl=0) et augmenter de 1 le numéro de colonne (dc=1).
le deuxième while,while A[ligne+dl,colonne+dc]==2 : A[ligne,colonne] = 2 colonne = colonne + dc ligne=ligne+dl A[ligne,colonne] = 5
fait ceci: tant que la case suivante (dans le sens du déplacement) contient 2, on enregistre 2 dans la case où se trouve la bille, et on met 5 dans la case suivante, qui devient la case courante.
-