Skip to content
Snippets Groups Projects
Commit b702e576 authored by Dellandrea Emmanuel's avatar Dellandrea Emmanuel
Browse files

Ajout correction

parent 0653b921
No related branches found
No related tags found
No related merge requests found
class Forme:
def __init__(self, canevas, x, y):
self.__canevas = canevas
self.__item = None
self.x = x
self.y = y
def effacer(self):
self.__canevas.delete(self.__item)
def deplacement(self, dx, dy):
self.__canevas.move(self.__item, dx, dy)
self.x += dx
self.y += dy
def get_cavenas(self):
return self.__canevas
def set_item(self,item):
self.__item = item
def get_item(self):
return self.__item
def set_state(self, s):
self.__canevas.itemconfig(self.__item, state=s)
class Rectangle(Forme):
def __init__(self, canevas, x, y, l, h, couleur):
Forme.__init__(self, canevas, x, y)
item = canevas.create_rectangle(x, y, x+l, y+h, fill=couleur, state="hidden")
self.set_item(item)
self.__l = l
self.__h = h
def __str__(self):
return f"Rectangle d'origine {self.x},{self.y} et de dimensions {self.__l}x{self.__h}"
def get_dim(self):
return self.__l, self.__h
def set_dim(self, l, h):
self.__l = l
self.__h = h
def contient_point(self, x, y):
return self.x <= x <= self.x + self.__l and \
self.y <= y <= self.y + self.__h
def redimension_par_points(self, x0, y0, x1, y1):
self.x = min(x0, x1)
self.y = min(y0, y1)
self.__l = abs(x0 - x1)
self.__h = abs(y0 - y1)
class Ellipse(Forme):
def __init__(self, canevas, x, y, rx, ry, couleur):
Forme.__init__(self, canevas, x, y)
item = canevas.create_oval(x-rx, y-ry, x+rx, y+ry, fill=couleur, state="hidden")
self.set_item(item)
self.__rx = rx
self.__ry = ry
def __str__(self):
return f"Ellipse de centre {self.x},{self.y} et de rayons {self.__rx}x{self.__ry}"
def get_dim(self):
return self.__rx, self.__ry
def set_dim(self, rx, ry):
self.__rx = rx
self.__ry = ry
def contient_point(self, x, y):
return ((x - self.x) / self.__rx) ** 2 + ((y - self.y) / self.__ry) ** 2 <= 1
def redimension_par_points(self, x0, y0, x1, y1):
self.x = (x0 + x1) // 2
self.y = (y0 + y1) // 2
self.__rx = abs(x0 - x1) / 2
self.__ry = abs(y0 - y1) / 2
ABIME
ABSENT
ACCIDENT
ACCROCHER
ACROBATE
ADROIT
AEROPORT
AFFAIRE
AFFICHE
AGITER
AIDER
AIGUILLE
ALBUM
ALLER
ALPHABET
AMENER
AMI
AMPOULE
AMUSANT
AMUSER
ANCIEN
ANGLE
ANORAK
APPAREIL
APPEL
APPORTER
APPUYER
APPUYER
APRES
ARC
ARMOIRE
ARRACHER
ARRET
ARRETER
ARRIERE
ARRIVER
ARROSER
ARROSOIR
ASSIETTE
ASSIS
ATTACHER
ATTENDRE
ATTENTION
ATTERRIR
ATTRAPER
AUTANT
AUTOUR
AVANCER
AVANT
AVION
BAGAGE
BAGARRE
BAGARRER
BAGUETTE
BAIGNER
BAILLER
BAISSER
BALANCER
BALANCOIRE
BALLE
BALLON
BANC
BANDE
BARBE
BARBOTER
BARRE
BARREAU
BAS
BATEAU
BATTRE
BEAUCOUP
BIBLIOTHEQUE
BICYCLETTE
BIEN
BILLE
BLANC
BLEU
BLOND
BOIS
BOITE
BOITE
BONDIR
BONNET
BORD
BOTTE
BOUCHER
BOUCHON
BOUDER
BOUGER
BOUSCULER
BOUT
BOUTEILLE
BOUTON
BRAS
BRETELLE
BRICOLAGE
BRUIT
BRUN
BULLES
BUREAU
CABANE
CABINET
CACHER
CAGE
CAGOULE
CAHIER
CAISSE
CALME
CAMARADE
CAMESCOPE
CAMION
CANARD
CARNET
CARRE
CARREAU
CARTABLE
CARTE
CARTON
CARTON
CASIER
CASQUE
CASQUETTE
CASSE
CASSER
CASSEROLE
CASSETTE
CATALOGUE
CEINTURE
CERCEAU
CERF
CHAINE
CHAISE
CHAISE
CHANGER
CHANSON
CHANTER
CHAPEAU
CHARGER
CHATEAU
CHAUD
CHAUSSER
CHAUSSETTE
CHAUSSON
CHAUSSURE
CHEMISE
CHERCHER
CHEVILLE
CHIFFRE
CHOISIR
CHOSE
CHUCHOTER
CHUTE
CIGARETTE
CINQ
CISEAUX
CLAIR
CLASSE
CLEF
CLOU
COEUR
COGNER
COIN
COL
COLERE
COLLANT
COLLE
COLLE
COLLER
COLORIAGE
COLORIER
COMMENCER
COMPARER
COMPTER
CONDUIRE
CONSTRUIRE
CONTE
CONTINUER
CONTRAIRE
CONTRE
COPAIN
COPIER
COQUIN
CORDE
CORPS
COTE
COU
COUCHER
COUDE
COUDRE
COULER
COULEUR
COULOIR
COUP
COUPER
COUR
COURIR
COURONNE
COURSE
COURT
COUVRIR
CRACHER
CRAIE
CRAVATE
CRAYON
CREUSER
CRIER
CROCHET
CROCODILE
CUBE
CUILLERE
CUISSE
CULOTTE
CURIEUX
CUVETTE
DAME
DANGER
DANGEUREUX
DANS
DANSER
DE
DEBORDER
DEBOUT
DEBOUT
DECHIRER
DECOLLER
DECORER
DECOUPAGE
DECOUPER
DEDANS
DEFENDRE
DEGONFLER
DEGUISER
DEHORS
DEMARRER
DEMOLIR
DEPASSER
DERNIER
DERRIERE
DESCENDRE
DESHABILLER
DESOBEIR
DESSIN
DESSINER
DESSUS
DETRUIRE
DEUX
DEUXIEME
DEVANT
DICTIONNAIRE
DIFFERENCE
DIFFERENT
DIFFICILE
DIRE
DIRECTEUR
DIRECTRICE
DISCUTER
DISPARAITRE
DISPUTE
DISTRIBUER
DIX
DOIGT
DOIGTS
DOMINO
DONNER
DORMIR
DOS
DOSSIER
DOUCHE
DOUCHER
DOUX
DROIT
DROITE
DU
DUR
EAU
EAU
ECARTER
ECHANGER
ECHARPE
ECHASSE
ECHASSES
ECHELLE
ECLABOUSSER
ECLAIRER
ECOLE
ECORCHER
ECOUTER
ECRAN
ECRASER
ECRIRE
ECRITURE
ECUREUIL
EFFACER
EFFORT
ELASTIQUE
ELEVE
EMMENER
EMPECHER
EMPORTER
ENCORE
ENERVER
ENFANT
ENFILER
ENFONCER
ENGIN
ENLEVER
ENSEMBLE
ENTENDRE
ENTONNOIR
ENTOURER
ENTRER
ENTRER
ENVELOPPE
ENVOLER
ENVOYER
ENVOYER
EPAIS
EPAULE
EPEE
EQUILIBRE
EQUIPE
ESCABEAU
ESCALADE
ESCALADER
ESCALIER
ESSUYER
ETAGERE
ETIQUETTE
ETROIT
EXPLIQUER
EXPLIQUER
EXTERIEUR
FABRIQUER
FACE
FACILE
FAIRE
FATIGUE
FAUTE
FEE
FENETRE
FERMER
FESSE
FEU
FEUILLE
FEUTRE
FICELLE
FIL
FILE
FILET
FILLE
FILM
FINIR
FLAQUE
FLECHE
FLOTTER
FOI
FOIS
FONCE
FOND
FORME
FORT
FOU
FOUILLER
FRAPPER
FREIN
FROID
FUSEE
FUSIL
GAGNER
GALOPER
GANT
GARAGE
GARCON
GARDER
GARDIEN
GARE
GARER
GAUCHE
GENER
GENOU
GENTIL
GLISSER
GOMME
GONFLER
GOUTER
GOUTTES
GRAND
GRIMPER
GRIS
GRONDER
GROS
GROUPE
GRUE
GYMNASTIQUE
HABILLER
HABIT
HANCHE
HANDICAPE
HAUT
HELICOPTERE
HISTOIRE
HUIT
HUMIDE
HURLER
ICI
IDEE
IMAGE
IMITER
IMMOBILE
INONDER
INSEPARABLE
INSTALLER
INSTRUMENT
INTERESSANT
INTERIEUR
INTRUS
JALOUX
JAMAIS
JAMBE
JAUNE
JEAN
JEU
JEU
JOLI
JONGLER
JOUER
JOUET
JOUEUR
JUPE
LACER
LACET
LAINE
LAISSER
LANCER
LARGE
LAVABO
LAVER
LETTRE
LEVER
LIGNE
LINGE
LIRE
LISSE
LISTE
LIT
LITRE
LIVRE
LOIN
LONG
LUNETTES
MADAME
MAGAZINE
MAGICIEN
MAGIE
MAGNETOSCOPE
MAILLOT
MAIN
MAINS
MAITRE
MAITRESSE
MAL
MALADROIT
MANCHE
MANQUER
MANTEAU
MARCHE
MARCHER
MARIONNETTE
MARTEAU
MATELAS
MATERNELLE
MECHANT
MELANGER
MEME
MENSONGE
MESURER
METAL
METRE
METTRE
MEUBLE
MICRO
MIEUX
MILIEU
MINE
MODELE
MODELER
MOINS
MOITIE
MONTAGNE
MONTER
MONTRER
MONTRER
MORCEAU
MOT
MOTEUR
MOTO
MOUCHOIR
MOUFLE
MOUILLE
MOUILLER
MOULIN
MOUSSE
MOYEN
MUET
MULTICOLORE
MUR
MUR
MUSCLE
MUSIQUE
NAGER
NEUF
NOEUD
NOIR
NOM
NOMBRE
NOUVEAU
NU
NUMERO
OBEIR
OBJET
OBLIGER
ONGLE
ORCHESTRE
ORDINATEUR
ORDRE
OUTIL
OUVRIR
OUVRIR
PAGE
PAIRE
PAIX
PANNE
PANTALON
PAPIER
PARCOURS
PARDON
PAREIL
PARKING
PARLER
PARTAGER
PARTIE
PARTIR
PARTIR
PAS
PASSERELLE
PATE
PATTES
PEDALE
PEDALER
PEINDRE
PEINTURE
PEINTURE
PELLE
PELUCHE
PENCHER
PENTE
PERCER
PERCHER
PERDRE
PERLE
PERSONNE
PETIT
PEU
PEUR
PHOTO
PIED
PIED
PILOTE
PINCEAU
PINCEAU
PINCER
PION
PIROUETTE
PLACARD
PLAFOND
PLAINDRE
PLANCHE
PLASTIQUE
PLATRE
PLEURER
PLEUVOIR
PLI
PLIAGE
PLIER
PLONGEOIR
PLONGER
PLUIE
PLUS
PNEU
POCHE
POIGNET
POING
POINT
POINTU
POISSON
POLI
POMPE
PONT
PONT
PORTE
PORTER
POSER
POSER
POSTER
POT
POUBELLE
POUCE
POURSUIVRE
POUSSER
POUTRE
POUVOIR
PREAU
PREMIER
PRENDRE
PRENOM
PREPARER
PRES
PRESENT
PRESQUE
PRESSER
PRESSER
PRETER
PRINCE
PRISE
PRIVER
PROGRES
PROGRESSER
PROMETTRE
PROPRE
PROTEGER
PUNIR
PUZZLE
PYJAMA
QUAI
QUATRE
QUESTION
QUITTER
RACONTER
RADIATEUR
RADIO
RAMPE
RAMPER
RANG
RANGER
RAQUETTE
RATER
RAYON
RAYURE
RECEVOIR
RECHAUFFER
RECITER
RECOMMENCER
RECREATION
RECULER
REFUSER
REGARDER
REINE
REMETTRE
REMPLACER
REMPLIR
RENVERSER
REPARER
REPETER
REPONDRE
RESPIRER
RESSEMBLER
RESTER
RETARD
RETOURNER
REUSSIR
REVENIR
RIDEAU
RIVIERE
ROBE
ROBINET
ROI
ROND
ROND
ROUE
ROUGE
ROULADE
ROULER
ROUX
RUBAN
SABLE
SAC
SAGE
SAIGNER
SALADIER
SALE
SALIR
SALLE
SALON
SAUT
SAUTER
SCIE
SEAU
SEC
SECHER
SEMELLE
SENS
SENTIR
SEPARER
SEPT
SERIEUX
SERPENT
SERRE
SERRER
SERRURE
SERVIETTE
SERVIR
SEUL
SIEGE
SIESTE
SIFFLER
SIFFLET
SIGNE
SIGNE
SILENCE
SINGE
SIX
SOCIERE
SOL
SOLDAT
SOLIDE
SOMMEIL
SONNER
SONNETTE
SORTIE
SORTIR
SOUFFLER
SOULEVER
SOULIGNER
SOUPLE
SOURD
SOURIRE
SOUS
SOUVENT
SPORT
STYLO
SUIVANT
SUIVRE
SUR
SURVEILLER
TABLE
TABLEAU
TABLIER
TABOURET
TACHE
TAILLE
TAILLER
TALON
TAMBOUR
TAMPON
TAPER
TAPIS
TARD
TAS
TASSE
TELECOMMANDE
TELEPHONE
TELEVISION
TENDRE
TENIR
TERMINER
TETE
TIRER
TIROIR
TISSU
TITRE
TOBOGGAN
TOILETTE
TOMBER
TORDU
TOT
TOUCHER
TOUJOURS
TOUR
TOURNER
TOURNEVIS
TRAIN
TRAINER
TRAIT
TRAMPOLINE
TRANQUILLE
TRANSPARENT
TRANSPIRER
TRANSPORTER
TRAVAIL
TRAVAILLER
TRAVERSER
TREMPER
TRICOT
TRICYCLE
TRIER
TROIS
TROISIEME
TROMPETTE
TROP
TROUER
TROUS
TROUSSE
TROUVER
TROUVER
TUNNEL
TUYAU
UN
UNIFORME
USE
VALISE
VELO
VENIR
VENTRE
VERRE
VERS
VERSER
VERT
VESTE
VETEMENT
VIDER
VIRAGE
VIS
VITE
VITESSE
VITRE
VOITURE
VOIX
VOLANT
VOLER
VOULOIR
VOYAGE
WAGON
XYLOPHONE
ZERO
ZIGZAG
#pendu5.py
from tkinter import *
from random import randint
from formes import *
class ZoneAffichage(Canvas):
def __init__(self, parent, w, h, c):
Canvas.__init__(self, master=parent, width=w, height=h, bg=c)
# Listes des formes du pendu, dans l'ordre du dessin
self.__listeShape = []
# Base, Poteau, Traverse, Corde
self.__listeShape.append(Rectangle(self, 50, 270, 200, 26, "brown"))
self.__listeShape.append(Rectangle(self, 87, 83, 26, 200, "brown"))
self.__listeShape.append(Rectangle(self, 87, 70, 150, 26, "brown"))
self.__listeShape.append(Rectangle(self, 183, 67, 10, 40, "brown"))
# Tete, Tronc
self.__listeShape.append(Ellipse(self, 188, 120, 20, 20, "black"))
self.__listeShape.append(Rectangle(self, 175, 143, 26, 60, "black"))
# Bras gauche, droit
self.__listeShape.append(Rectangle(self, 133, 150, 40, 10, "black"))
self.__listeShape.append(Rectangle(self, 203, 150, 40, 10, "black"))
# Jambes gauche et droite
self.__listeShape.append(Rectangle(self, 175, 205, 10, 40, "black"))
self.__listeShape.append(Rectangle(self, 191, 205, 10, 40, "black"))
def cachePendu(self):
for f in self.__listeShape:
f.set_state("hidden")
def dessinePiecePendu(self, i):
if i<=len(self.__listeShape):
self.__listeShape[i-1].set_state("normal")
class MonBoutonLettre(Button):
def __init__(self, parent, fen, t):
Button.__init__(self, master=parent, text=t, state=DISABLED)
self.__fen=fen
self.__lettre=t
def cliquer(self):
self.config(state=DISABLED)
self.__fen.traitement(self.__lettre)
class FenPrincipale(Tk):
def __init__(self):
Tk.__init__(self)
self.title('Jeu du pendu')
self.configure(bg="#2687bc")
# La barre d'outils
barreOutils = Frame(self)
barreOutils.pack(side=TOP, padx=5, pady=5)
newGameButton = Button(barreOutils, text ='Nouvelle partie', width=13)
newGameButton.pack(side=LEFT, padx=5, pady=5)
quitButton = Button(barreOutils, text ='Quitter', width=13)
quitButton.pack(side=LEFT, padx=5, pady=5)
# Le canvas pour le dessin du pendu
self.__zoneAffichage = ZoneAffichage(self, 320, 320, "#ec4062")
self.__zoneAffichage.pack(side=TOP, padx=5, pady=5)
# Le mot à deviner
self.__lmot = Label(self, text='Mot :')
self.__lmot.pack(side=TOP)
# Le clavier
clavier = Frame(self)
clavier.pack(side=TOP, padx=5, pady=5)
self.__boutons = []
for i in range(26):
t = chr(ord('A')+i)
self.__boutons.append(MonBoutonLettre(clavier, self, t))
# Placement des boutons du clavier
for i in range(3):
for j in range(7):
self.__boutons[i*7+j].grid(row=i,column=j)
for j in range(5):
self.__boutons[21+j].grid(row=3,column=j+1)
# Commandes associées aux boutons
quitButton.config(command=self.destroy)
newGameButton.config(command=self.nouvellePartie)
for i in range(26):
self.__boutons[i].config(command=self.__boutons[i].cliquer)
# initialisation des attributs
self.__mot = ""
self.__motAffiche= ""
self.__mots= []
self.__nbManques = 0
# Chargement du fichier de mots
self.chargeMots()
# On commence une nouvelle partie
self.nouvellePartie()
def chargeMots(self):
f = open('mots.txt', 'r')
s = f.read()
self.__mots = s.split('\n')
f.close()
def nouvellePartie(self):
# Boutons-lettres dégrisés
for i in range(26):
self.__boutons[i].config(state=NORMAL)
# Nouveau mot à devnier et update
self.__mot = self.__mots[randint(0,len(self.__mots)-1)]
self.__motAffiche = len(self.__mot)*'*'
self.__lmot.config(text='Mot : '+self.__motAffiche)
# on re-init le nbre de coups manqués et on efface le précédent dessin
self.__nbManques = 0
self.__zoneAffichage.cachePendu() #---> on cache le pendu en utilisant la couleur de fond
def traitement(self, lettre):
cpt = 0
lettres = list(self.__motAffiche)
for i in range(len(self.__mot)):
if self.__mot[i]==lettre:
cpt +=1
lettres[i]=lettre
self.__motAffiche = ''.join(lettres)
if cpt ==0:
self.__nbManques += 1
self.__zoneAffichage.dessinePiecePendu(self.__nbManques) #---> Dessin de l'elt suivant
if self.__nbManques >= 10:
self.finPartie(False)
else:
self.__lmot.config(text='Mot : '+self.__motAffiche)
if self.__mot == self.__motAffiche:
self.finPartie(True)
def finPartie(self, gagne):
for b in self.__boutons:
b.config(state=DISABLED)
if gagne :
self.__lmot.config(text=self.__mot+' - Bravo, vous avez gagné')
else :
self.__lmot.config(text='Vous avez perdu, le mot était : '+self.__mot)
if __name__ == '__main__':
fen = FenPrincipale()
fen.mainloop()
TD5/correction/diagramme_classes_pendu.png

217 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment