Bonjour,
Je débute dans Python et Pygame et je tente de résoudre un problème qui me bloque de façon récurrente (j'avais déjà buté et abandonné il y a longtemps, sur un autre jeu). Cela me bloque en fait dès que je développe un programme un peu long, j'ai l'impression (à chaque fois partir de modèles basiques existants).
En l'occurrence, j'ai suivi le cours suivant (très bien fait) :
http://sdz.tdct.org/sdz/interface-gr...ur-python.html
et j'ai amélioré le jeu de Donkey Kong proposé :
http://sdz.tdct.org/sdz/interface-gr...P-DKLabyrinthe
Le problème, c'est que, depuis que je tente d'introduire un écran de défaite (l'écran de victoire ne pose aucun problème), le programme plante systématiquement et j'obtiens la fameuse erreur "Inconsistent indentation detected". Or, je n'identifie aucune erreur d'indentation (mais j'avoue ne pas en comprendre encore parfaitement la logique). De plus, le déboggeur d'EDLE m'indique une ligne bien antérieure, qui n'a pas été modifiée, et qui, si je supprime mon ajout final, fonctionne à nouveau et n'empêche pas le jeu de fonctionner !
La ligne indiquée est la quatrième ci-dessous :
L'ajout que je fais et qui plante le programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #Escalator(montant) -> Chgmt de carte if niveau.structure[dk.case_y][dk.case_x] == 'e': #Génération d'un niveau à partir d'un fichier if choix == 'n5': choix = 'n5b' if choix == 'n4': choix = 'n4b' niveau = Niveau(choix) niveau.generer() niveau.afficher(fenetre)
C'est la deuxième ligne en particulier qui semble poser problème (erreur d'indentation indiquée, au début, avant que EDLE m'indique la ligne plus haut).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 # Défaite -> Ecran de défaite et retour à l'accueil if tpsmilli>=30000: tps_fin = pygame.time.get_ticks() score = tps_fin pygame.mixer.music.stop() pygame.mixer.music.load("musique/bonus-win2.wav") pygame.mixer.music.play() pygame.display.flip() fenetre.fill([0,0,0]) bravo = pygame.image.load(image_bravo).convert() fenetre.blit(bravo, (150,180)) txt = 'Perdu ! =)' text = fontfin.render(txt, 1, blanc) affichfin(text) affichtpsfin(text_tps) pygame.display.flip()
Je précise que les deux "if" litigieux ne sont pas de même niveau (c'est les deux "if" en ligne 2 à chaque fois qui le sont - la modification en "elif" ne change rien, apparemment).
Pour information, j'ai installé un autre éditeur (Komodo Edit) qui me fait apparaître plusieurs lignes où l'indentation semble poser problème (dont les deux ci-dessus), mais - même quand je change les tabulations en espace ou les espaces en tabulations, même quand la ligne semble "corrigée" - qui ne résout rien.
Voilà ! J'espère que quelqu'un comprend quelque chose à ce problème sur lequel j'ai déjà passé des heures sans succès...
Bien cordialement,
Jean-Baptiste
Partager