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}) |
Partager