Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
utilisateurs:vinss [Le 24/07/2007, 13:33] VinsS créée |
utilisateurs:vinss [Le 18/02/2009, 05:33] (Version actuelle) VinsS |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
Je dispose de temps libre pour contribuer aux efforts de la communauté. C'est | Je dispose de temps libre pour contribuer aux efforts de la communauté. C'est | ||
- | donc avec plaisir que je rejoint l'équipe User d'Ubuntu-fr. | + | donc avec plaisir que je rejoins l'équipe User d'Ubuntu-fr. |
vins@swing.be | vins@swing.be | ||
Bruxelles le 24/07/07 | Bruxelles le 24/07/07 | ||
+ | |||
+ | |||
+ | Un petit jeu en python : | ||
+ | testcolor.py | ||
+ | |||
+ | <code> | ||
+ | #! /usr/bin/env python | ||
+ | # -*- coding: utf-8 -*- | ||
+ | # colortest.py | ||
+ | # | ||
+ | # Author Vincent Vande Vyvre <vins@swing.be> | ||
+ | # | ||
+ | # This program is free software; you can redistribute it and/or modify | ||
+ | # it under the terms of the GNU General Public License as published by | ||
+ | # the Free Software Foundation; either version 2 of the License, or | ||
+ | # (at your option) any later version. | ||
+ | # | ||
+ | # This program is distributed in the hope that it will be useful, | ||
+ | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
+ | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
+ | # GNU General Public License for more details. | ||
+ | # | ||
+ | # You should have received a copy of the GNU General Public License | ||
+ | # along with this program; if not, write to the Free Software | ||
+ | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
+ | # MA 02110-1301, USA. | ||
+ | |||
+ | |||
+ | from Tkinter import * | ||
+ | from random import * | ||
+ | |||
+ | class Statut: | ||
+ | """Etat du jeu | ||
+ | |||
+ | renvoie l'avance du jeu, les couleurs, la solution et les points""" | ||
+ | |||
+ | np, ne, pt, orr, orv, orb, tar, tav, tab, diff,levp, nivdif = 10, 3, 0, 0, 0, 0, 0, 0, 0, "", 100, 1 | ||
+ | #nombre de jeu, nombre d'essais, total des points,couleurs d'origine RVB | ||
+ | #couleurs cible, couleur differente (string), niveau de jeu (increment) | ||
+ | |||
+ | class Level1: | ||
+ | """Niveau de jeu 1 | ||
+ | |||
+ | évalue les couleurs aléatoires et les paramètres de jeu""" | ||
+ | |||
+ | def new(self): | ||
+ | #nouveau jeu (10>0) | ||
+ | nbplay.configure(state=DISABLED) | ||
+ | etat.ne = 3 | ||
+ | if etat.np == 10: #si nouvelle partie | ||
+ | score.configure(text="Points : 0",fg="black") | ||
+ | levbut1.configure(state=DISABLED) | ||
+ | levbut2.configure(state=DISABLED) | ||
+ | essai.configure(text="Essais : 3") | ||
+ | etat.diff = "" | ||
+ | #creation des 3 valeurs aleatoires | ||
+ | rr = randrange(0, 256) | ||
+ | etat.orr, etat.tar = rr, rr #rouge | ||
+ | rv = randrange(0, 256) | ||
+ | etat.orv, etat.tav = rv, rv #vert | ||
+ | rb = randrange(0, 256) | ||
+ | etat.orb, etat.tab = rb, rb #bleu | ||
+ | origcolhex = self.inttohex(rr, rv, rb) | ||
+ | |||
+ | #designation aleatoire de la couleur modifiée | ||
+ | while etat.diff == "": | ||
+ | coldif, lev = (randrange(6)), etat.levp #choix d'une des 3 couleurs | ||
+ | if coldif == 0: | ||
+ | if rr > lev: | ||
+ | rr -= lev | ||
+ | etat.diff = "-rouge" #necessaire pour afficher la solution | ||
+ | etat.tar = rr | ||
+ | elif coldif == 1: | ||
+ | if rr < 255-lev: | ||
+ | rr += lev | ||
+ | etat.diff = "+rouge" | ||
+ | etat.tar = rr | ||
+ | elif coldif == 2: | ||
+ | if rv > lev: | ||
+ | rv -= lev | ||
+ | etat.diff = "-vert" | ||
+ | etat.tav = rv | ||
+ | elif coldif == 3: | ||
+ | if rv < 255-lev: | ||
+ | rv += lev | ||
+ | etat.diff = "+vert" | ||
+ | etat.tav = rv | ||
+ | elif coldif == 4: | ||
+ | if rb > lev: | ||
+ | rb -= lev | ||
+ | etat.diff = "-bleu" | ||
+ | etat.tab = rb | ||
+ | else: | ||
+ | if rb < 255-lev: | ||
+ | rb += lev | ||
+ | etat.diff = "+bleu" | ||
+ | etat.tab = rb | ||
+ | targcolhex = self.inttohex(rr, rv, rb) | ||
+ | etat.np -= 1 | ||
+ | nbp = "Jouer : "+str(etat.np) | ||
+ | #affichage initial | ||
+ | can1.itemconfigure(orig,fill=origcolhex) | ||
+ | can1.itemconfigure(testa,fill=targcolhex) | ||
+ | can1.itemconfigure(testb,fill=targcolhex) | ||
+ | can1.itemconfigure(testc,fill=targcolhex) | ||
+ | can1.itemconfigure(target,fill=targcolhex) | ||
+ | nbplay.configure(text=nbp) | ||
+ | soluce.configure(text="Solution :") | ||
+ | |||
+ | def inttohex(self, red, green, blue): | ||
+ | #conversion au format str "#RRVVBB" | ||
+ | rhex = str(hex(red)) | ||
+ | rhex = rhex[2:] | ||
+ | if len(rhex) == 1: | ||
+ | rhex = "0"+rhex | ||
+ | ghex = str(hex(green)) | ||
+ | ghex = ghex[2:] | ||
+ | if len(ghex) == 1: | ||
+ | ghex = "0"+ghex | ||
+ | bhex = str(hex(blue)) | ||
+ | bhex = bhex[2:] | ||
+ | if len(bhex) == 1: | ||
+ | bhex = "0"+bhex | ||
+ | colorhex = "#"+rhex+ghex+bhex | ||
+ | return colorhex | ||
+ | |||
+ | class Level2: | ||
+ | """Niveau de jeu 2 | ||
+ | |||
+ | évalue les couleurs aléatoires et les paramètres de jeu""" | ||
+ | |||
+ | def new(self): | ||
+ | #nouveau jeu (10>0) | ||
+ | nbplay.configure(state=DISABLED) | ||
+ | etat.ne = 3 | ||
+ | if etat.np == 10: #si nouvelle partie | ||
+ | score.configure(text="Points : 0",fg="black") | ||
+ | levbut1.configure(state=DISABLED) | ||
+ | levbut2.configure(state=DISABLED) | ||
+ | essai.configure(text="Essais : 3") | ||
+ | etat.diff = "" | ||
+ | #creation des 3 valeurs aleatoires | ||
+ | rr = randrange(0, 65536) | ||
+ | etat.orr, etat.tar = rr, rr #rouge | ||
+ | rv = randrange(0, 65536) | ||
+ | etat.orv, etat.tav = rv, rv #vert | ||
+ | rb = randrange(0, 65536) | ||
+ | etat.orb, etat.tab = rb, rb #bleu | ||
+ | origcolhex = self.inttohex(rr, rv, rb) | ||
+ | #print origcolhex | ||
+ | |||
+ | #designation aleatoire de la couleur modifiée | ||
+ | while etat.diff == "": | ||
+ | coldif, lev = (randrange(6)), etat.levp #choix d'une des 3 couleurs | ||
+ | if coldif == 0: | ||
+ | if rr > lev: | ||
+ | rr -= lev | ||
+ | etat.diff = "-rouge" #necessaire pour afficher la solution | ||
+ | etat.tar = rr | ||
+ | elif coldif == 1: | ||
+ | if rr < 65535-lev: | ||
+ | rr += lev | ||
+ | etat.diff = "+rouge" | ||
+ | etat.tar = rr | ||
+ | elif coldif == 2: | ||
+ | if rv > lev: | ||
+ | rv -= lev | ||
+ | etat.diff = "-vert" | ||
+ | etat.tav = rv | ||
+ | elif coldif == 3: | ||
+ | if rv < 65535-lev: | ||
+ | rv += lev | ||
+ | etat.diff = "+vert" | ||
+ | etat.tav = rv | ||
+ | elif coldif == 4: | ||
+ | if rb > lev: | ||
+ | rb -= lev | ||
+ | etat.diff = "-bleu" | ||
+ | etat.tab = rb | ||
+ | else: | ||
+ | if rb < 65535-lev: | ||
+ | rb += lev | ||
+ | etat.diff = "+bleu" | ||
+ | etat.tab = rb | ||
+ | targcolhex = self.inttohex(rr, rv, rb) | ||
+ | etat.np -= 1 | ||
+ | nbp = "Jouer : "+str(etat.np) | ||
+ | #print targcolhex, etat.diff | ||
+ | #affichage initial | ||
+ | can1.itemconfigure(orig,fill=origcolhex) | ||
+ | can1.itemconfigure(testa,fill=targcolhex) | ||
+ | can1.itemconfigure(testb,fill=targcolhex) | ||
+ | can1.itemconfigure(testc,fill=targcolhex) | ||
+ | can1.itemconfigure(target,fill=targcolhex) | ||
+ | nbplay.configure(text=nbp) | ||
+ | soluce.configure(text="Solution :") | ||
+ | |||
+ | def inttohex(self, red, green, blue): | ||
+ | #conversion au format str "#RRRRVVVVBBBB" | ||
+ | rhex = str(hex(red)) | ||
+ | rhex = rhex[2:] | ||
+ | while len(rhex) < 4: | ||
+ | rhex = "0"+rhex | ||
+ | ghex = str(hex(green)) | ||
+ | ghex = ghex[2:] | ||
+ | while len(ghex) < 4: | ||
+ | ghex = "0"+ghex | ||
+ | bhex = str(hex(blue)) | ||
+ | bhex = bhex[2:] | ||
+ | while len(bhex) < 4: | ||
+ | bhex = "0"+bhex | ||
+ | colorhex = "#"+rhex+ghex+bhex | ||
+ | return colorhex | ||
+ | |||
+ | def new(): | ||
+ | if etat.nivdif == 1: | ||
+ | easy.new() | ||
+ | else: | ||
+ | hard.new() | ||
+ | | ||
+ | def colorise(targcolhex): | ||
+ | #affichage des essais de couleur | ||
+ | essai.configure(text="Essai(s) :"+str(etat.ne)) | ||
+ | if etat.ne == 2: | ||
+ | can1.itemconfigure(testa,fill=targcolhex) | ||
+ | elif etat.ne == 1: | ||
+ | can1.itemconfigure(testb,fill=targcolhex) | ||
+ | else : | ||
+ | can1.itemconfigure(testc,fill=targcolhex) | ||
+ | loosefonc() | ||
+ | | ||
+ | def redp1(): | ||
+ | #rouge+ | ||
+ | if etat.nivdif == 2: | ||
+ | redp2() | ||
+ | else : | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orr > 255-lev: | ||
+ | newcol = 255 | ||
+ | else: | ||
+ | newcol = etat.orr + lev | ||
+ | if newcol == etat.tar: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = easy.inttohex(newcol, etat.orv, etat.orb) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def redp2(): | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orr > 65535-lev: | ||
+ | newcol = 65535 | ||
+ | else: | ||
+ | newcol = etat.orr + lev | ||
+ | if newcol == etat.tar: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = hard.inttohex(newcol, etat.orv, etat.orb) | ||
+ | colorise(targcolhex) | ||
+ | | ||
+ | def greenp1(): | ||
+ | #vert+ | ||
+ | if etat.nivdif == 2: | ||
+ | greenp2() | ||
+ | else : | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orv > 255-lev: | ||
+ | newcol = 255 | ||
+ | else: | ||
+ | newcol = etat.orv + lev | ||
+ | if newcol == etat.tav: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = easy.inttohex(etat.tar, newcol, etat.tab) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def greenp2(): | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orv > 65535-lev: | ||
+ | newcol = 65535 | ||
+ | else: | ||
+ | newcol = etat.orv + lev | ||
+ | if newcol == etat.tav: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = hard.inttohex(etat.orr, newcol, etat.orb) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def bluep1(): | ||
+ | #bleu+ | ||
+ | if etat.nivdif == 2: | ||
+ | bluep2() | ||
+ | else : | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orb > 255-lev: | ||
+ | newcol = 255 | ||
+ | else: | ||
+ | newcol = etat.orb + lev | ||
+ | if newcol == etat.tab: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = easy.inttohex(etat.tar, etat.tav, newcol) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def bluep2(): | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orb > 65535-lev: | ||
+ | newcol = 65535 | ||
+ | else: | ||
+ | newcol = etat.orb + lev | ||
+ | if newcol == etat.tab: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = hard.inttohex(etat.orr, etat.orv, newcol) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def redm1(): | ||
+ | #rouge- | ||
+ | if etat.nivdif == 2: | ||
+ | redm2() | ||
+ | else : | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orr > lev-1: | ||
+ | newcol = etat.orr - lev | ||
+ | else: | ||
+ | newcol = 0 | ||
+ | if newcol == etat.tar: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = easy.inttohex(newcol, etat.tav, etat.tab) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def redm2(): | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orr > lev-1: | ||
+ | newcol = etat.orr - lev | ||
+ | else: | ||
+ | newcol = 0 | ||
+ | if newcol == etat.tar: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = hard.inttohex(newcol, etat.tav, etat.tab) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def greenm1(): | ||
+ | #vert- | ||
+ | if etat.nivdif == 2: | ||
+ | greenm2() | ||
+ | else : | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orv > lev-1: | ||
+ | newcol = etat.orv - lev | ||
+ | else: | ||
+ | newcol = 0 | ||
+ | if newcol == etat.tav: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = easy.inttohex(etat.tar, newcol, etat.tab) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def greenm2(): | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orv > lev-1: | ||
+ | newcol = etat.orv - lev | ||
+ | else: | ||
+ | newcol = 0 | ||
+ | if newcol == etat.tav: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = hard.inttohex(etat.tav, newcol, etat.tab) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def bluem1(): | ||
+ | #bleu- | ||
+ | if etat.nivdif == 2: | ||
+ | bluem2() | ||
+ | else : | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orb > lev-1: | ||
+ | newcol = etat.orb - lev | ||
+ | else: | ||
+ | newcol = 0 | ||
+ | if newcol == etat.tab: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = easy.inttohex(etat.tar, etat.tav, newcol) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def bluem2(): | ||
+ | if etat.ne != 0: | ||
+ | lev = etat.levp | ||
+ | etat.ne -= 1 | ||
+ | if etat.orb > lev-1: | ||
+ | newcol = etat.orb - lev | ||
+ | else: | ||
+ | newcol = 0 | ||
+ | if newcol == etat.tab: | ||
+ | winfonc() | ||
+ | else: | ||
+ | targcolhex = hard.inttohex(etat.tar, etat.tav, newcol) | ||
+ | colorise(targcolhex) | ||
+ | |||
+ | def winfonc(): | ||
+ | #bonne reponse | ||
+ | essai.configure(text = "Essai : 0") | ||
+ | if etat.ne == 2: | ||
+ | etat.pt += 3 | ||
+ | elif etat.ne == 1: | ||
+ | etat.pt += 2 | ||
+ | else: | ||
+ | etat.pt += 1 | ||
+ | etat.ne = 0 | ||
+ | soluce.configure(text=etat.diff+" Exact !") | ||
+ | score.configure(text="Points : "+str(etat.pt)) | ||
+ | nbplay.configure(state=ACTIVE) | ||
+ | if etat.np == 0: | ||
+ | score.configure(text="Total :"+str(etat.pt),fg="blue") | ||
+ | etat.np, etat.pt, etat.ne = 10, 0, 3 | ||
+ | nbplay.configure(text="Jouer : 10") | ||
+ | levbut1.configure(state=NORMAL) | ||
+ | levbut2.configure(state=NORMAL) | ||
+ | |||
+ | def loosefonc(): | ||
+ | #3 mauvaises reponses | ||
+ | essai.configure(text = "Essai : 0") | ||
+ | soluce.configure(text="Solution : "+etat.diff) | ||
+ | nbplay.configure(state=ACTIVE) | ||
+ | if etat.np == 0: | ||
+ | score.configure(text="Total :"+str(etat.pt),fg="blue") | ||
+ | etat.np, etat.pt, etat.ne = 10, 0, 3 | ||
+ | nbplay.configure(text="Jouer : 10") | ||
+ | levbut1.configure(state=NORMAL) | ||
+ | levbut2.configure(state=NORMAL) | ||
+ | |||
+ | def easylev(): | ||
+ | if etat.np==10 and etat.ne==3: | ||
+ | #print "niveau 1" | ||
+ | etat.levp = 100 #une valeur + petite augmente la difficulé | ||
+ | etat.nivdif = 1 | ||
+ | |||
+ | def hightlev(): | ||
+ | if etat.np==10 and etat.ne==3: | ||
+ | #print "niveau 2" | ||
+ | etat.levp = 6000 #une valeur + petite augmente la difficulé | ||
+ | etat.nivdif = 2 | ||
+ | |||
+ | def aide (): | ||
+ | try: | ||
+ | fenhelp.destroy() #ne semble pas être fonctionnel | ||
+ | except: | ||
+ | pass | ||
+ | fenhelp = Tk() | ||
+ | fenhelp.title("Aide - Colortest") | ||
+ | message1 = Label(fenhelp, text='Instructions de jeu:', font='arial 16') | ||
+ | message1.pack() | ||
+ | message1bis = Label(fenhelp, text="Le but du jeu consiste à recréer la couleur cible en\n partant de la couleur d'origine et en lui appliquant une\n des six modifications données par les six boutons colorés.\n\nUne seule modification, ajout ou retrait rouge, vert ou bleu\n permet d'aboutir à la couleur cible.\n\nLe niveau 2 présente deux couleurs fort proches et,\n donc, un niveau de difficulté supérieur.") | ||
+ | message1bis.pack() | ||
+ | bouton_quit = Button(fenhelp, text= 'Quitter', relief= GROOVE, command=fenhelp.destroy) | ||
+ | bouton_quit.pack(side='bottom', pady=5) | ||
+ | | ||
+ | ### Initialisation de la fenêtre principale ### | ||
+ | fen1 = Tk() | ||
+ | fen1.title("Colortest") | ||
+ | |||
+ | can1 = Canvas(fen1,bg ='white',height =260,width =430) | ||
+ | can1.grid(row =0,column =0,rowspan =10, columnspan =8) | ||
+ | can1.create_text(120,10,text="COULEUR D'ORIGINE") | ||
+ | can1.create_text(300,20,text="COULEUR CIBLE") | ||
+ | Button(fen1, text ='+',bg="red",relief=GROOVE,width=3,command =redp1).grid(row =11,column =2) | ||
+ | Button(fen1, text ='+',bg="green",relief=GROOVE,width=3,command =greenp1).grid(row =12,column =2) | ||
+ | Button(fen1, text ='+',bg="blue",relief=GROOVE,width=3,command =bluep1).grid(row =13,column =2) | ||
+ | Button(fen1, text ='-',bg="red",relief=GROOVE,width=3,command =redm1).grid(row =11,column =1) | ||
+ | Button(fen1, text ='-',bg="green",relief=GROOVE,width=3,command =greenm1).grid(row =12,column =1) | ||
+ | Button(fen1, text ='-',bg="blue",relief=GROOVE,width=3,command =bluem1).grid(row =13,column =1) | ||
+ | orig = can1.create_rectangle(20,20,220,220,fill ='white') #couleur d'origine | ||
+ | testa = can1.create_rectangle(210,40,240,240,width=0,fill='white') #couleur du premier essai | ||
+ | testb = can1.create_rectangle(240,40,270,240,width=0,fill='white') #deuxieme essai | ||
+ | testc = can1.create_rectangle(270,40,300,240,width=0,fill='white') #troisieme essai | ||
+ | target = can1.create_rectangle(300,40,410,240,width=0,fill='white') #couleur cible | ||
+ | essai = Label(text ="Essai(s) :3") | ||
+ | essai.grid(row=11,column=3,columnspan=2,sticky=W) | ||
+ | score = Label(text ="Point(s) :0") | ||
+ | score.grid(row=12,column=3,columnspan=2,sticky=W) | ||
+ | soluce = Label(text ="Solution :") | ||
+ | soluce.grid(row=13,column=3,columnspan=2,sticky=W) | ||
+ | nbplay = Button(fen1, text ='Jouer : 10',relief=GROOVE,command =new) | ||
+ | nbplay.grid(row =11, column =0,) | ||
+ | butvar = IntVar() #identification des radio-boutons | ||
+ | levbut1 = Radiobutton(fen1,text="Niveau 1",variable=butvar,value=0,command=easylev) | ||
+ | levbut2 = Radiobutton(fen1,text="niveau 2",variable=butvar,value=1,command=hightlev) | ||
+ | levbut1.grid(row=12,column=0) | ||
+ | levbut2.grid(row=13,column=0) | ||
+ | Button(fen1,text="Aide",relief=GROOVE,width=6,command=aide).grid(row=12,column=7) | ||
+ | Button(fen1, text ='Quitter',relief=GROOVE,width=6,command=quit).grid(row =13,column=7) | ||
+ | |||
+ | etat = Statut() | ||
+ | easy = Level1() | ||
+ | hard = Level2() | ||
+ | levbut1.invoke() #niveau 1 | ||
+ | |||
+ | fen1.mainloop() | ||
+ | </code> | ||