Labyrinthe à bille
mistoufleee
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 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
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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?
"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?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
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,
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.
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.
Qu'entendez-vous par comment se comporte-elle ? Je vous avoue que j'ai commencé cette année la programmation....
De plus, je ne sais pas comment utiliser la coloration syntaxique sur ce site...
quand tu atteins un mur, je pense qu'il faut simplement arrêter la boucle, sans rien changer dans le tableau
dans le cas "else", il faut mettre 2 en (0,k-1), et mettre 5 en (0,k)
Peut-être qu'il manque un k=k+1 quelque part pour que la boucle continue a tourner...?
dans le cas "else", il faut mettre 2 en (0,k-1), et mettre 5 en (0,k) (et, évidemment, ne pas faire return dans le else)