Votre question

Programme python tkinter

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
18 Janvier 2010 14:53:05

BOnjour est-ce que quelqun pourrait m'aider la dessus?c'est le code et il faut que j'affiche les scores aussi et mettre plus d'un tresor dans le programme et que je donne une bonne description du code...merci






from Tkinter import *
from tkFont import Font
import tkMessageBox
from random import randrange


def cb_regles():
"""fonction qui affiche les règles pour le bouton "Règles du Jeu" """
msg= "Le but du jeu est de trouver tous les trésors cachés. Le joueur doit cliquer sur une cellule et un indice de proximité au(x) trésor(s) lui est donné: Bleu=froid, vert=tiède, jaune=chaud, rouge=bouillant. En utilisant les indices, le joueur doit trouver le(s) trésor(s) avec le moins de coups possibles."
tkMessageBox.showinfo('Règles du Jeu', message=msg)


def cb_reset():
"""fonction qui permet au bouton "RESET" de réinitialiser la grille"""
global goal
goal = (randrange(size[0]), randrange(size[1]))
for n in range(size[0]*size[1]):
c = divmod(n, size[1]); hunter[c]['text'], hunter[c]['bg'] = '', colors[5]


def cb_cell(cell):
"""fonction qui test si le trésor est dans la cellule cliquée"""
if distance(cell) == 0: # le trésor a été trouvé
for n in range(size[0]*size[1]):
c = divmod(n, size[1]); hunter[c]['text'] = distance(c)


def distance(cell):
"""fonction qui calcule la distance au trésor depuis la cellule cliquée"""
dist = abs(goal[0]-cell[0]) + abs(goal[1]-cell[1])
hunter[cell]['bg'] = colors[dist/4 if dist < 16 else 4]; return dist


def cmd_ok():
"""fonction qui affiche et initialise la fenêtre de jeu"""
global goal, hunter, size
ligne = lvar.get()
colonne = cvar.get()
tresor = tvar.get()
size=(colonne,ligne)
goal = (randrange(size[0]), randrange(size[1]))
if(ligne<=20 and ligne >=5 and colonne >=5 and colonne<=20):
hunter,fnt1 = {0:Tk()},'Arial 12'
hunter[1] = Frame(hunter[0])
hunter[1].pack(side=TOP,fill = BOTH , padx=2,pady=2)
hunter[11] = Button(hunter[1], font=fnt1, text="Règles du Jeu", command=cb_regles)
hunter[11].pack(side=LEFT,fill=BOTH)
hunter[12]= Label(hunter[1], font=fnt1, text="Vous devez trouver %d trésor(s)" % (tresor))
hunter[12].pack(side=LEFT, fill=BOTH, padx=2,pady=2)


hunter[2] = Frame(hunter[0])
hunter[2].pack(side=TOP, fill=BOTH, expand=YES, padx=2, pady=2)
for n in range(size[0]*size[1]):
c = divmod(n, size[1])
hunter[c] = Button(hunter[2], font=fnt1, bg=colors[5], width=1, height=1,
command=lambda cell=c: cb_cell(cell))
hunter[c].grid(column=c[0], row=c[1], sticky=N+E+W+S)
for n in range(size[0]): hunter[2].columnconfigure(n, weight=1)
for n in range(size[1]): hunter[2].rowconfigure(n, weight=1)

hunter[3] = Frame(hunter[0])
hunter[3].pack(side=TOP, fill=BOTH)
hunter[31] = Button(hunter[3], font=fnt1, text="Recommencer", command=cb_reset)
hunter[31].pack(side=RIGHT, fill=BOTH)



hunter[0].title('HUNTER'); hunter[0].protocol('WM_DELETE_WINDOW', hunter[0].quit)
hunter[0].update_idletasks(); hunter[0].resizable(1,1)
hunter[0].minsize(hunter[0].winfo_width(), hunter[0].winfo_height())
hunter[0].mainloop(); hunter[0].destroy()
else:
tkMessageBox.showerror('ERROR', message='Veuillez entrer un nombre compris entre 5 et 20.')

def main():
"""main program of the "dialogs" module"""
global root,tvar,cvar,lvar,size,colors,hunter
root,fnt1, fnt2 = {0: Tk()},'Arial 12','Courier 12'
colors = ('#F00', '#FF0', '#0F0', '#00F', '#CCC', '#FFF')
tvar = IntVar(value=1)
cvar = IntVar(value=12)
lvar = IntVar(value=12)


root[1] = Frame(root[0])
root[1].pack(side=TOP,fill = BOTH , padx=2,pady=2)
root[11]= Label(root[1],font = fnt1, text="Veuillez choisir vos paramètres de jeu : ")
root[11].pack(side=LEFT,fill=BOTH)
root[2] = Frame(root[0])
root[2].pack(side=TOP,fill = BOTH , padx=2,pady=2)
root[21] = Label(root[2], font = fnt2, text="Nombre de lignes:")
root[21].pack(side=LEFT,fill=BOTH)
root[22] = Entry(root[2],textvar = lvar, width = 4)
root[22].pack(side=RIGHT,fill=BOTH)
root[3] = Frame(root[0])
root[3].pack(side=TOP,fill = BOTH, padx=2,pady=2)
root[31] = Label(root[3], font = fnt2, text="Nombre de colonnes:")
root[31].pack(side=LEFT,fill=BOTH)
root[32] = Entry(root[3],textvar = cvar, width = 4)
root[32].pack(side=RIGHT,fill=BOTH)
root[4] = Frame(root[0])
root[4].pack(side=TOP,fill = BOTH, padx=2,pady=2)
root[41] = Label(root[4], font = fnt2, text="Nombre de trésors cachés:")
root[41].pack(side=LEFT,fill=BOTH)
root[42] = Entry(root[4],textvar = tvar, width = 4)
root[42].pack(side=RIGHT,fill=BOTH)
root[5] = Frame(root[0])
root[5].pack(side=TOP,fill=BOTH,padx=2,pady=2)
root[51] = Button(root[5],text="OK",command=cmd_ok)
root[51].pack(side=TOP,fill=BOTH,padx=2, pady=2)


root[0].title('PARAMETRES DE JEU'); root[0].protocol('WM_DELETE_WINDOW', root[0].quit)
root[0].update_idletasks(); root[0].resizable(1,1)
root[0].minsize(root[0].winfo_width(), root[0].winfo_height())
root[0].mainloop(); root[0].destroy()


if __name__ == '__main__':
main()

Autres pages sur : programme python tkinter

a b L Programmation
18 Janvier 2010 20:11:37

Met les tags de code, parce que là on ne voit pas l'indentation, ce qui est gênant en python ;) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS