Problème dans la récursivité d'un démineur
Jean-Baptiste
-
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,
Nous sommes en classe de Terminal S en spécialité ISN.
Dans notre spécialité nous devons pour le bac coder le jeu du démineur.
Nous avons réussi entièrement a créer ce démineur mais nous bloquons pour l'action du joueur sur une case vide ou une récursivité doit s'enclencher pour ouvrir a la chaîne toutes les cases vides ainsi que les chiffres autour.
Merci pour l'aide que vous pourrez nous apporter.
Merci d'y penser dans tes prochains messages.
Nous sommes en classe de Terminal S en spécialité ISN.
Dans notre spécialité nous devons pour le bac coder le jeu du démineur.
Nous avons réussi entièrement a créer ce démineur mais nous bloquons pour l'action du joueur sur une case vide ou une récursivité doit s'enclencher pour ouvrir a la chaîne toutes les cases vides ainsi que les chiffres autour.
#cette fonction s'active en cas de clique sur une case vide #a correspond a la ligne et b a la colonne #leur valeur varie entre 0 et 20 dans une matrice de 20x20 def case_vide(a,b): if a==0 or a==20 or b==0 or b==20: """case_vide_particuliere(a,b)""" #on traitera ici les cas particuliers des premieres et derniere ligne/colone pass else: can.create_text(b*25+15, a*25+15, text=grille[a][b], fill='black',font='Arial 16') can.create_text((b-1)*25+15, (a-1)*25+15, text=grille[a-1][b-1], fill='black',font='Arial 16') if grille[a-1][b-1] == 0: case_vide(a-1,b-1) else: pass can.create_text((b-1)*25+15, a*25+15, text=grille[a][b-1], fill='black',font='Arial 16') if grille[a][b-1] == 0: case_vide(a,b-1) else: pass can.create_text((b-1)*25+15, (a+1)*25+15, text=grille[a+1][b-1], fill='black',font='Arial 16') if grille[a+1][b-1] == 0: case_vide(a+1,b-1) else: pass can.create_text(b*25+15, (a+1)*25+15, text=grille[a+1][b], fill='black',font='Arial 16') if grille[a+1][b] == 0: case_vide(a+1,b) else: pass can.create_text((b+1)*25+15, (a+1)*25+15, text=grille[a+1][b+1], fill='black',font='Arial 16') if grille[a+1][b+1] == 0: case_vide(a+1,b+1) else: pass can.create_text((b+1)*25+15, a*25+15, text=grille[a][b+1], fill='black',font='Arial 16') if grille[a][b+1] == 0: case_vide(a,b+1) else: pass can.create_text((b+1)*25+15, (a-1)*25+15, text=grille[a-1][b+1], fill='black',font='Arial 16') if grille[a-1][b+1] == 0: case_vide(a-1,b+1) else: pass can.create_text(b*25+15, (a-1)*25+15, text=grille[a-1][b], fill='black',font='Arial 16') if grille[a-1][b] == 0: case_vide(a-1,b) else: pass
Merci pour l'aide que vous pourrez nous apporter.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Merci d'y penser dans tes prochains messages.
A voir également:
- Problème dans la récursivité d'un démineur
- Démineur google - Accueil - Services en ligne
- Accéder aux jeux cachés de Google - Guide
- Démineur - Forum Jeux vidéo
- Ppcm avec recursivité ✓ - Forum Programmation
- Calculer l'exponentiel par récursivité ✓ - Forum Programmation
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, quel est votre soucis?
nous avons finalement réussi merci.
voici le bout de code finale
pb : programme tournait en boucle
resolution : chemin du programme marqué par verif dans la grille des drapeau
voici le bout de code finale
pb : programme tournait en boucle
resolution : chemin du programme marqué par verif dans la grille des drapeau
def verification(a,b):
## On définit ce qu'il se passe lorsque le joueur fais un clic gauche
## sur une case
if face[a][b] == "drapeau":
pass
elif face[a][b] == "verif":
pass
elif grille[a][b] == 'bombe':
echec(a,b)
init = 0
elif grille[a][b] == 0:
can.create_rectangle(b*25+3, a*25+3,b*25+27, a*25+27,width=0, fill="ivory")
face[a][b] = "verif"
if a ==0 and b==0:
verification (a,b+1)
verification(a+1,b+1)
verification(a+1,b)
elif a==0 and b==19:
verification(a,b-1)
verification(a+1,b-1)
verification(a+1,b)
elif a ==19 and b==0:
verification (a-1,b)
verification(a-1,b+1)
verification(a,b+1)
elif a==19 and b==19:
verification(a,b-1)
verification(a-1,b-1)
verification(a-1,b)
elif a==0:
verification(a,b-1)
verification(a+1,b-1)
verification(a+1,b)
verification(a+1,b+1)
verification(a,b+1)
elif a==19:
verification(a-1,b-1)
verification(a,b-1)
verification(a,b+1)
verification(a-1,b+1)
verification(a-1,b)
elif b==0:
verification(a+1,b)
verification(a+1,b+1)
verification(a,b+1)
verification(a-1,b+1)
verification(a-1,b)
elif b==19:
verification(a-1,b-1)
verification(a,b-1)
verification(a+1,b-1)
verification(a+1,b)
verification(a-1,b)
else:
verification(a-1,b-1)
verification(a,b-1)
verification(a+1,b-1)
verification(a+1,b)
verification(a+1,b+1)
verification(a,b+1)
verification(a-1,b+1)
verification(a-1,b)
else:
coul = ['blue','green','orange','red','brown','purple','black','black']
can.create_rectangle(b*25+3, a*25+3,
b*25+27, a*25+27,width=0, fill="ivory")
can.create_text(b*25+15, a*25+15,
text=grille[a][b], fill=coul[grille[a][b]-1], font='Arial 18')
face[a][b] = "verif"
je ne suis pas surpris du comportement que tu décris: ne devrais-tu pas modifier la valeur de la grille avant d'appeler la fonction?
C'est cette fonction que nous n'arrivons pas a coder, nous avons un message de maximum de récursivité atteinte ainsi que les différentes actions non réalisées mais cela veut-il dire que la pile est pleine ou que le programme n'arrive pas a continuer pour une erreur que nous ne voyons pas. Visuellement la fonction le prend qu'une option a chaque fois et s’arrête pas ces messages d'erreur.