LisaZoeChloe
Messages postés2Date d'inscriptionmardi 9 juin 2015StatutMembreDernière intervention 9 juin 2015
-
9 juin 2015 à 18:33
Utilisateur anonyme -
10 juin 2015 à 21:59
Bonsoir à tous,
Nous sommes en Terminale S spécialité ISN, et nous avons choisi de présenter comme programme une version maison du jeu Motus, renommé pour cela Motuth.
Seulement, nous avons plusieurs problèmes : tout d'abord, une fois que l'utilisateur a trouvé le bon mot, ou qu'il a épuisé toutes ses chances de trouver le bon mot, nous n'arrivons pas à faire afficher une nouvelle grille de jeu (le problème se trouve de la ligne 88 à la ligne 236). Ensuite, nous avons du mal à intégrer une variable score (appelée ici s), qui compterait le nombre de points en fonction du nombre de grilles réussies, problème lié au fait que nous n'arrivons pas à faire une nouvelle grille (lignes 258 à 306). Enfin, le jeu démarre par une animation sous forme de GIF (que vous ne pourrez sûrement pas visualiser puisque vous ne disposez pas des images nécessaires, il vous faudra donc supprimer cette partie pour tester le jeu, je suppose), que nous souhaiterions fermer en cliquant simplement dessus, ce que nous n'arrivons pas à faire.
Nous sommes conscientes de demander beaucoup, mais chaque réponse nous sera précieuse.
Merci d'avance,
Lisa, Zoé, Chloé, trois élèves en détresse
from tkinter import *
import random
import time
trouve = False
a=1
s=0 #score
v=3 #vies
for k in range(5):
txt = can1.create_text(90+k*95, 160 +80*(a-1), text=propMaj[k], font="Arial 46", fill="white")
fen1.update()
time.sleep(0.5)
mot_bis=mot
for l in range (5):
if propMaj[l]==mot[l]:
if l==5:
mot_bis=mot_bis[0:5]+' '
else :
mot_bis=mot_bis[0:l]+' '+mot_bis[l+1:]
can1.create_rectangle(50+l*95,120+(a-1)*80,50+(l+1)*95,120+a*80,fill="red")
print(mot_bis)
for m in range (5):
if propMaj[m] in mot_bis:
if m==0 :
mot_bis=' '+mot_bis[1:]
else :
if l==5:
mot_bis=mot_bis[0:5]+' '
else :
mot_bis=mot_bis[0:m]+' '+mot_bis[m+1:]
can1.create_rectangle(50+m*95,120+(a-1)*80,50+(m+1)*95,120+a*80,fill="yellow")
for k in range(5):
txt = can1.create_text(90+k*95, 160 +80*(a-1), text=propMaj[k], font="Arial 46", fill="white")
fen1.update()
a=a+1
if propMaj==mot:
trouve=True
s=s+50
print('votre score est actuellement de',s) #à enlever
txt = can1.create_text(90+l, 160+l, text=mot[0], font="Arial 46", fill="white")
entrerprop.delete(0,END)
if a==7: #Perdre une vie si pas trouvé le mot
v=v-1
print("le mot à trouver était :",mot)
# Affichage de la première lettre à la ligne suivante, pour la nouvelle proposition
#txt = can1.create_text(95, 161+80*(a), text=mot[0], font="Arial 46", fill="white")
#a=a+1
#Mot proposé dans la zone de saisie
fen1=Tk()
fen1.title("MOTUTH")
Label(fen1,text="Proposition", width=71,bg='CornflowerBlue',font="Arial 12").grid(row=0,column=0)
#Mot choisi par le programme
liste_mot=['RALER','RAFLE','LIVRE','OBJET','FORCE','MARIE','DEGAT','MATHS','PORTE','COUPE','TABLE','NOTES','CRABE','LATIN','CHOIX','VOILA','ROUGE','JOLIE','OGRES','FELIN','FURET','STYLO','POING','TIGRE','MORTE','OMBRE','HIBOU','HUILE','BIJOU','PIXEL','SUITE','ARMES','DAGUE','PARLE','FUITE','HACHE','MAGIE','BATON','CORDE','FOINS','HOTEL','AUTEL','RUINE','POSTE','CARTE','CHUTE','URNES','OUTRE','COQUE','COPIE','GOULE','TOMES','POIRE','FROID','CHAUD','DEVIN','PRUNE','MELON','FONTE','GLACE','ARCHE','PLAGE','CLEFS','EXTRA','TOILE','BRUIT','MORTS','VELOS','CLAIR','TOURS','POINT','POULE','BONUS','MALUS','USAGE','JOKER','TEMPS','CHAOS','MORAL','CIBLE','COURS','POIDS','GRAND','MONDE','TRONC']
mot = random.choice(liste_mot)
print(mot)
# Tableau de jeu
can1=Canvas(fen1,bg='Cornflowerblue',height=700,width=650)
can1.grid(row=1)
x1,y1,x2,y2=50,40,525,40
x3,y3,x4,y4=50,120,50,600
for k in range (7) : # lignes verticales
y1,y2=y1+80,y2+80
can1.create_line (x1,y1,x2,y2,fill='white')
k=k+1
for l in range (6): # lignes horizontales
can1.create_line (x3,y3,x4,y4,fill='white')
x3,x4=x3+95,x4+95
l=l+1
#Création des rectangles utilisés pour la comparaison
x5,y5,x6,y6=50,120,145,200
x7,y7,x8,y8=50,200,145,280
x9,y9,x10,y10=50,280,145,360
x11,y11,x12,y12=50,360,145,440
x13,y13,x14,y14=50,440,145,520
x15,y15,x16,y16=50,520,145,600
for m in range (5):
can1.create_rectangle(x5,y5,x6,y6)
x5,x6=x5+95,x6+95
m=m+1
for n in range (5):
can1.create_rectangle(x7,y7,x8,y8)
x7,x8=x7+95,x8+95
n=n+1
for o in range (5):
can1.create_rectangle(x9,y9,x10,y10)
x9,x10=x9+95,x10+95
o=o+1
for p in range (5):
can1.create_rectangle(x11,y11,x12,y12)
x11,x12=x11+95,x12+95
p=p+1
for q in range (5):
can1.create_rectangle(x13,y13,x14,y14)
x13,x14=x13+95,x14+95
q=q+1
for r in range (5):
can1.create_rectangle(x15,y15,x16,y16)
x15,x16=x15+95,x16+95
r=r+1
#Afficher la première lettre du mot à trouver dans le tableau
txt = can1.create_text(90, 160, text=mot[0], font="Arial 46", fill="white")
#fichier scores
resultats=open('scores','r')
r=resultats.read().split()
joueurs=[['0','0'],['0','0'],['0','0'],['0','0'],['0','0']]
for i in range(5):
joueurs[i][0]=r[2*i]
joueurs[i][1]=r[2*i+1]
joueurs=sorted(joueurs,reverse=True)
nom=ent.get()
z=int(joueurs[4][0])
if s>(z):
joueurs[4][0]=s
joueurs[4][1]=nom
joueurs=sorted(joueurs,reverse=True)
else:
print('')
resultats.close()
#tracer du tableau
x1,y1=50,70
for k in range (6) :
can3.create_line (50,y1+k*50,600,y1+k*50,fill='white')
for l in range (3):
can3.create_line (x1+l*275,70,x1+l*275,321,fill='white')
#placement des pseudos et scores dans le tableau
A=48
a=len(joueurs)
for u in range (a):
A=A+50
txt1 = can3.create_text(160,A,text=joueurs[u][0],font="14", fill="white")
txt1 = can3.create_text(455,A,text=joueurs[u][1],font="14", fill="white")
print(joueurs)
fen3.mainloop()
# MENU ACCUEIL -----------------------------------------------------------------
J'ai plusieurs propositions. Déjà, il faut que tu inséres correctement ton code. Pour cela (soit dans un nouveau message, soit en modifiant ton post) clique sur le menu déroulant du bouton <> (quand tu écris un message) puis sélectionne Python. Colle ton code entre les deux bannières et c'est bon.
Ensuite, tu as un problème vis-à-vis du fait de recommencer le jeu après qu'il ait trouvé le mot ou qu'il ait épuisé toutes ses chances. Tu peux mettre tout ce qui concerne la fenêtre de jeu dans une fonction (mettons jeu() ) et mettre à la fin (quand il a gagné le jeu) :
fen1.destroy() # si fen1 regroupe bien toute la partie de ton jeu
jeu() # exécute tout le jeu
La fonction jeu() va donc s'appeler elle-même quand le joueur a gagné ou n'a plus de vie.
N'oublie pas de réinitialiser les variables qui ne le sont pas au début de jeu ! (sauf si tu veux qu'elles s'incrémentent comme la variable s).
LisaZoeChloe
Messages postés2Date d'inscriptionmardi 9 juin 2015StatutMembreDernière intervention 9 juin 2015 9 juin 2015 à 19:03
Salut Help-Jason,
Merci pour ta réponse si rapide !
Crois-tu que tu pourrais, en copiant-collant notre programme, nous montrer comment tu envisages que l'on s'y prenne ? Nous sommes un peu perdues, bien que nous essayons de notre côté également de faire ce que tu nous proposes.
Déjà réalise la première étape qui est d'insérer correctement ton code sur le forum. Ensuite, il faut que tu comprennes ce que je veux dire. Je pense qu'il faut que tu crées une fonction jeu() qui englobe toute la partie COMPARAISON MOT ET PROPOSITION (même s'il y a des définitions à l'intérieur). Tu ajoutes :
fen1.destroy()
jeu()
quand le joueur n'a plus de vie ou qu'il a gagné. Comme ça, ça détruit tout l'environnement que tu as crée puis ça recommence du début.
Attention aux variables non initialisées qui vont continuer de varier (pour la variable score c'est pas important mais pour vie c'est important car le nombre de vie est réinitialisé à chaque début de jeu).
9 juin 2015 à 19:03
Merci pour ta réponse si rapide !
Crois-tu que tu pourrais, en copiant-collant notre programme, nous montrer comment tu envisages que l'on s'y prenne ? Nous sommes un peu perdues, bien que nous essayons de notre côté également de faire ce que tu nous proposes.
Encore merci
10 juin 2015 à 21:59
quand le joueur n'a plus de vie ou qu'il a gagné. Comme ça, ça détruit tout l'environnement que tu as crée puis ça recommence du début.
Attention aux variables non initialisées qui vont continuer de varier (pour la variable score c'est pas important mais pour vie c'est important car le nombre de vie est réinitialisé à chaque début de jeu).