Bonjour,
désolé mais je ne sais toujours où chercher.
Toujours dans l'écriture d'un jeu de labyrinthe, j'ai ajouté l'affichage du sprite du joueur.
Cela fonctionne parfaitement en débuggage (spyder, pycharm, ...) mais si on démarre normalement le script (toujours dans un IDE) il y a une image blanche à la place (le reste du labyrinthe s'affiche normalement).
Je redonne mon code à tout hasard.
Merci d'avance.
Sylvain.

Le pgm :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Affiche un labyrinthe avec énnemis et trésors
# Affiche l'avatar du joueur

from tkinter import *
import M_Lab_02

if __name__ == "__main__" :
    perso = {                           # ensemble des données du personnage
        "sprite" : "sprites/tux.png",   # son avatar
        "pieces" : 0,                   # nombre de pièces d'or
        "vie" : 25,                     # nombre de points de vie restant
        "niveau" : 1,                   # numéro du niveau actuel
        "colonne" : 1,
        "ligne" : 1}                    # colonne + ligne = position du joueur
    niveau_max : 3

    fenetre = Tk()
    fenetre.title("Labyrinthe graphique avec le héro")

    lab_actuel = M_Lab_02.charge_lab("level_1")

    (toile, hero, sprites) = M_Lab_02.aff_lab(lab_actuel, fenetre, perso)

    fenetre.mainloop()#!/usr/bin/python3
# -*- coding: utf-8 -*-

from tkinter import *

def charge_lab(nom):
    """
        Charge le labyrinthe depuis le fichier nom.txt

        nom : nom du fichier sans l'extension .txt

        retour
            liste contenant le labyrinthe
    """
    try :
        fichier = open(nom + ".txt" , "r")
        datas = fichier.readlines()
        fichier.close()
    except IOError :
        print("Impossible de lire le fichier {}.txt".format(nom))
        exit(1)
        
    for i in range(len(datas)):
        datas[i] = datas[i].strip() # retire les caracteres inutiles
    return  datas                   # au debut et a la fin de la ligne 

def aff_lab(lab, fenetre, perso):
    """
        Affichage d'un labyrinthe
        
        lab : liste contenant le labyrinthe

        retour : tuple contenant la toile et les sprites
    """
    # Rq : la taille des sprites pourrait être un paramètre
    toile = Canvas(fenetre, width = 600, height = 600)
    coin    = PhotoImage(file = "sprites/angle.png")
    mur_h   = PhotoImage(file = "sprites/mur_h.png")
    mur_v   = PhotoImage(file = "sprites/mur_v.png")
    sol     = PhotoImage(file = "sprites/sol.png")
    sortie  = PhotoImage(file = "sprites/sortie.png")
    ennemi  = PhotoImage(file = "sprites/ennemi.png")
    tresor  = PhotoImage(file = "sprites/coffre_ferme.png")
    avatar  = PhotoImage(file = perso["sprite"])

    n_ligne = 0
    for ligne in lab :
        n_col = 0
        for car in ligne :
            if car == "+" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = coin)
            if car == "-" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = mur_h)
            if car == "|" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = mur_v)
            if car == " " and (n_col != perso["colonne"] or n_ligne != perso["ligne"]) :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = sol)
            if car == " " and (n_col == perso["colonne"] and n_ligne == perso["ligne"]) :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = avatar) 
            if (car == "1" or car == "2" or car == "3") and (n_col != perso["colonne"] or n_ligne != perso["ligne"]) :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = tresor)
            if (car == "1" or car == "2" or car == "3") and (n_col == perso["colonne"] and n_ligne == perso["ligne"]) :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = avatar)
            if car == "$" and (n_col != perso["colonne"] or n_ligne != perso["ligne"]) :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = ennemi)
            if car == "$" and (n_col == perso["colonne"] and n_ligne == perso["ligne"]) :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = avatar)
            if car == "S" :
                toile.create_image(n_col*30, n_ligne*30, anchor = NW, image = sortie)
            n_col += 1
        n_ligne += 1
    toile.pack()
    return (toile, perso, {
        "coin" : coin,
        "mur_h" : mur_h,
        "mur_v" : mur_v,
        "sol" : sol,
        "sortie" : sortie,
        "ennemi" : ennemi,
        "tresor" : tresor})