Projet ISN
Résolu/Fermé
Antoine451833
-
1 mai 2020 à 18:03
Antoine451833 Messages postés 47 Date d'inscription vendredi 1 mai 2020 Statut Membre Dernière intervention 13 mai 2020 - 5 mai 2020 à 18:42
Antoine451833 Messages postés 47 Date d'inscription vendredi 1 mai 2020 Statut Membre Dernière intervention 13 mai 2020 - 5 mai 2020 à 18:42
A voir également:
- Projet ISN
- Filigrane projet - Guide
- Exemple d'un projet déjà monté - Forum Programmation
- Film projet x a telecharger gratuitement - Télécharger - Outils professionnels
- Musique projet x - Forum Musique / Radio / Clip
- Gantt projet - Télécharger - Gestion de projets
21 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2020 à 12:29
2 mai 2020 à 12:29
Bonjour Antoine451833,
"J'attends vos conseils ..."
En voila déjà un:
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
"J'attends vos conseils ..."
En voila déjà un:
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2020 à 12:49
2 mai 2020 à 12:49
Ce serait bien de voir ton code quand même ... avec les balises:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
2 mai 2020 à 13:05
2 mai 2020 à 13:05
Aucun soucis, cependant quelques détails: dans le menu le bouton qui renvoi vers la plateforme de jeux appelé "scene" ici passe d'abord par "switch" qui permet de faire un décompte et ensuite de lancer le jeux. Ici j'ai rendu inactif "song" car ça bloque le décompte. Je m'occuperais de ça après avoir coder le jeux mais si t'as une idée je suis preneur.
#-----------------------------PARAMETRE NECESSAIRE------------------------------ from tkinter import * from tkinter.messagebox import * import pygame #fenetre graphique Mafenetre=Tk() Mafenetre.geometry('1400x800') Mafenetre.attributes("-fullscreen",0) Mafenetre.title("STREET KO le meilleur jeu de bagarre") #-------------------------------PAGE D'OUVERTURE-------------------------------- def menu1(): global cand,fondepart cand=Canvas(Mafenetre,width=1400,height=800,bg='yellow') cand.place(x=0,y=0) image_fond=cand.create_image(0,0,image=fondepart,anchor="nw") cand.focus_set() cand.bind("<Key>",test_entree) def test_entree(event): touche=event.keysym if touche=="Return" : menu() #-------------------------------MENU ET SOUS MENU------------------------------- def menu(): global can1,fond,bou1,bou2,bou3,bou5,image_fond can1=Canvas(Mafenetre,width=1400,height=800,bg='yellow') can1.place(x=0,y=0) image_fond=can1.create_image(0,0,image=fond,anchor="nw") #bouton bou1=Button(Mafenetre,text="Quitter",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=quitter) bou1.place(x=65,y=500) bou2=Button(Mafenetre,text="Règles",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=regles) bou2.place(x=65,y=240) bou3=Button(Mafenetre,text="Commencer",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0,font=('Fixedsys', '20'), command=switch) bou3.place(x=65,y=110) bou5=Button(Mafenetre,text="Histoire",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=histoire) bou5.place(x=65,y=370) #griser #bool_hitoire==False #if bool_hitoire==False : #bou2=Button(Mafenetre,text="Règles",fg="#ffffff",width=220,height=40,image=bouton_gris,compound=CENTER,borderwidth=0,command=menu) #bou2.place(x=215,y=240) #else : #bou2=Button(Mafenetre,text="Règles",fg="#ffffff",width=220,height=40,image=bouton,compound=CENTER,borderwidth=0,command=regles) #bou2.place(x=215,y=240) def reset(): global bou1,bou2,bou3,bou5 bou1.place_forget() bou2.place_forget() bou3.place_forget() bou5.place_forget() def histoire(): global can1,image_fond,bou4, bou6,ennonce1, bou8 reset() can1.itemconfig(image_fond,image=H) can1.focus_set() #texte text1="Il fut un temps où les guerres faisaient rage. Impac-" text2="tant la galaxie entière des millions de victimes ont" text3="été déplorés. L'objectif était toujours le même le dé-" text4="sir ardent d'être le plus puissant. Les dirigeants des" text5="quatre-coints de la galaxie en perdaient la raison." text6="C'est alors qu'un scientifique neutre créa deux comba-" text7="ttants hors-pairs, Rut et Bob. Tout juste sortis du" text8="four ils etaient déjà impliqués dans le combat. Alors" text9="dotés de capacités sans pareil, ils mirent fin à ces" text10="guerres et acquierent de nouveaux pouvoirs. Des années" text11="plus tard ils sont de nouveau reunis mais cette fois" text12="pour s'affronter. Le combat aura lieu à la plage 4586," text13="sous un soleil tropical où les deux compagnons ont par" text14="le passé mis un therme à ces guerres. L'issue du com" text15="-bat sera décisive pour le futur. Afin d'en connaître" text16="d'avantage veuillez prendre connaissance des règles." textefinal=text1+'\n'+text2+'\n'+text3+'\n'+text4+'\n'+text5+'\n'+text6+'\n'+text7+'\n'+text8+'\n'+text9+'\n'+text10+'\n'+text11+'\n'+text12+'\n'+text13+'\n'+text14+'\n'+text15+'\n'+text16 ennonce1=can1.create_text(895,340,text=textefinal,fil="white", font=('Fixedsys', '18')) #bouton bou4=Button(Mafenetre,text="Menu principal",fg="#ffffff",width=250,height=50,image=bouton, compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=menu) bou4.place(x=450,y=690) bou6=Button(Mafenetre,text="Règles",fg="#ffffff",width=250,height=50,image=bouton3, foreground="black", compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=reset_regles) bou6.place(x=790,y=690) bou8=Button(Mafenetre,text="règles.",fg="#ffffff",width=115,height=25,image=bouton2, compound=CENTER,borderwidth=0, font=('Fixedsys', '18'), command=reset_regles) bou8.place(x=1180,y=550) def reset_histoire(): global bou7,bou9, can1,enonce2 bou7.place_forget() bou9.place_forget() can1.itemconfig(ennonce2,text="") histoire() def regles(): global can1,image_fond, bou7, bou9,ennonce2 reset() can1.itemconfig(image_fond,image=R) can1.focus_set() #texte text1="Suivant le personnage que vous in-" text2="carnez, Rut ou Bob, votre objectif" text3="est de terrasser votre adversaire." text4="Pour se faire vous devez enchaîner" text5="les combinaisons de touche afin de" text6="gagner le combat. Ainsi il est con-" text7="seillé de prendre connaissance des" text8="commandes afin d'etablir une stra-" text9="tégie solide. L'enjeu de ce combat" text10="est de déterminer le futur époux" text11="de la princesse Sofya tant convoi-" text12="té. Donner tout ce que vous avez" text13="pour chopper cette BOMBE !!!!!!!!!" textefinal2=text1+'\n'+text2+'\n'+text3+'\n'+text4+'\n'+text5+'\n'+text6+'\n'+text7+'\n'+text8+'\n'+text9+'\n'+text10+'\n'+text11+'\n'+text12+'\n'+text13 ennonce2=can1.create_text(370,365,text=textefinal2,fil="white", font=('Fixedsys', '18')) #bouton bou7=Button(Mafenetre,text="Menu principal",fg="#ffffff",width=250,height=50,image=bouton, compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=menu) bou7.place(x=450,y=690) bou9=Button(Mafenetre,text="Histoire",fg="#ffffff",width=250,height=50,image=bouton3, foreground="black", compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=reset_histoire) bou9.place(x=790,y=690) def reset_regles(): global bou4,bou6, can1,enonce1, bou8 bou4.place_forget() bou6.place_forget() bou8.place_forget() can1.itemconfig(ennonce1,text="") regles() def quitter(): if askyesno("Fenêtre décisive", "Êtes-vous sûr de vouloir faire ça?"): Mafenetre.destroy() else: showinfo("Fenêtre du meilleur choix", "Vous avez bien raison!") #-------------------------------------JEUX-------------------------------------- #fonction avant jeux def song(): launched = True pygame.init() song = pygame.mixer.Sound("fight_song.wav") song.play() while launched: for even in pygame.event.get(): if even.type == pygame.QUIT: launched = False def switch(): global Pchoisi reset() #song() can1.itemconfig(image_fond, image=mes_photos[Pchoisi]) Pchoisi += 1 if Pchoisi==5: pass scene() else : Mafenetre.after(1000, switch) p1=PhotoImage(file="Decort.png") p2=PhotoImage(file="3.png") p3=PhotoImage(file="2.png") p4=PhotoImage(file="1.png") p5=PhotoImage(file="Pdecort.png") mes_photos = [p2, p3, p4, p5 ,p1] Pchoisi = 0 #scene de combat def scene(): global can1,PosX,PosY reset() can1.itemconfig(image_fond,image=D) can1.focus_set() #bouton bou7 =Button(Mafenetre, text="pause", width =10,borderwidth=0, command=pause) bou7.place(x=100,y=720) def pause(): global pause pause=can.create_text(250,250,font=('Fixedsys',18),text="PAUSE") #-----------------------------PARAMETRE NECESSAIRE------------------------------ #importation des images fond=PhotoImage(file="Menu.png") fondepart=PhotoImage(file="Pmenu.png") D=PhotoImage(file="Decort.png") H=PhotoImage(file="Histoire.png") R=PhotoImage(file="Regles.png") bouton=PhotoImage(file="bouton.png") bouton2=PhotoImage(file="bouton2.png") bouton3=PhotoImage(file="bouton3.png") PosX=200 PosY=200 #lancement du menu menu1() Mafenetre.mainloop()
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2020 à 14:33
2 mai 2020 à 14:33
Ah ok, au début tu disais (tout est fait sous tkinter). mais je vois que tu a aussi Pygame
Moi je ne l'ai pas ... mais bon
En gros, ce que tu veux c'est capter les touches a et b dans ta fonction test_entree(event)
et si appui a et joueur = 1 et ensuite appui sur b et joueur = 2 alors afficher 'c'est 1 qui gagne !'
C'est ça ?
Moi je ne l'ai pas ... mais bon
En gros, ce que tu veux c'est capter les touches a et b dans ta fonction test_entree(event)
et si appui a et joueur = 1 et ensuite appui sur b et joueur = 2 alors afficher 'c'est 1 qui gagne !'
C'est ça ?
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
2 mai 2020 à 16:38
2 mai 2020 à 16:38
oui mais ne t'en fait pas pygame sert uniquement pour le son et c'est pas fonctionnel encore donc tu peux l'enlever. la fonction test_entree(event) sert uniquement a afficher l'image de présentation du jeux, après avoir appuyé sur "entré" on arrive au menu.
J'aimerai créer une nouvelle fonction qui effectivement capte des touche par exemple: "a" "b" et "c" "d". Dans cette exemple on définit a<c et b>d et vice versa. On attribut les touches "a" "b" au joueur 1 et les touches "c" "d" au joueur 2. Et toutes les 3s (chiffre qui peut varier) les joueurs 1 et 2 appui sur l'une des touches qui lui est assignés, et en fonction ils perdent des pv. Celui qui n'a plus de pv a perdu, c'est game over. Enfin on assimile a chaque touché un coup différent mais si ca devient trop compliqué j'avais pensées a un gif tout simplement qui toute les 3s envoi un coup.
Dit moi si t'as tout compris, j'ai essayé d’être le plus claire possible. Merci d'ailleurs d'interagir avec moi.
J'aimerai créer une nouvelle fonction qui effectivement capte des touche par exemple: "a" "b" et "c" "d". Dans cette exemple on définit a<c et b>d et vice versa. On attribut les touches "a" "b" au joueur 1 et les touches "c" "d" au joueur 2. Et toutes les 3s (chiffre qui peut varier) les joueurs 1 et 2 appui sur l'une des touches qui lui est assignés, et en fonction ils perdent des pv. Celui qui n'a plus de pv a perdu, c'est game over. Enfin on assimile a chaque touché un coup différent mais si ca devient trop compliqué j'avais pensées a un gif tout simplement qui toute les 3s envoi un coup.
Dit moi si t'as tout compris, j'ai essayé d’être le plus claire possible. Merci d'ailleurs d'interagir avec moi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2020 à 18:08
2 mai 2020 à 18:08
Ah ok,
Apres un laps de temps, le programme donnerait un top, et là, les 2 joueurs appuient en même
temps chacun sur une touche et si 1 a tapé "a" et 2 a tapé "c", c'est 2 qui gagne ?
Là, on décrémente le nombre de points de vie de 1
On teste si les pv de 1 sont =0 => game over, sinon, on continue
Si ils jouent en même temps sur le même ordi, tu as intérêt a choisir des touches extrêmes du
clavier, par exemple "a", "q" et "p", "m" !
Il est touffu ton code !
Il faut mieux commencer petit et agrémenter petit à petit
Moi, si j'avais à faire ça, je commencerais par chercher comment programmer un chrono pour faire un top toutes les 3 secondes, en mode console déjà, pour tester plus rapidement tes différents essais, pas avec une interface graphique
Ensuite, je reviendrais à une interface, mais pas avec tout ce bazar de photos et de textes d'explications, juste un petit truc pour tester le top ! les appuis de touches et afficher "c'est Bob qui gagne ! " et "attention Rut, plus que 5 pv" au fur et à mesure de la décrémentation des points
et le message "game over" à la fin
Tu sais déjà comment capter un appui de touche avec bind et comment récupérer quelle touche avec event.keysym
Ensuite, quand ca tourne, tu peux ajouter tout le reste (photos, textes d'explications, etc …)
Enfin, si je peux me permettre: :-)
Ecris "Pour ce faire" plutôt que "Pour se faire"
"tant convoitée" plutôt que "tant convoité"
"mettre un terme" plutôt que "mettre un therme" (les thermes, c'est autre chose …)
Apres un laps de temps, le programme donnerait un top, et là, les 2 joueurs appuient en même
temps chacun sur une touche et si 1 a tapé "a" et 2 a tapé "c", c'est 2 qui gagne ?
Là, on décrémente le nombre de points de vie de 1
On teste si les pv de 1 sont =0 => game over, sinon, on continue
Si ils jouent en même temps sur le même ordi, tu as intérêt a choisir des touches extrêmes du
clavier, par exemple "a", "q" et "p", "m" !
Il est touffu ton code !
Il faut mieux commencer petit et agrémenter petit à petit
Moi, si j'avais à faire ça, je commencerais par chercher comment programmer un chrono pour faire un top toutes les 3 secondes, en mode console déjà, pour tester plus rapidement tes différents essais, pas avec une interface graphique
Ensuite, je reviendrais à une interface, mais pas avec tout ce bazar de photos et de textes d'explications, juste un petit truc pour tester le top ! les appuis de touches et afficher "c'est Bob qui gagne ! " et "attention Rut, plus que 5 pv" au fur et à mesure de la décrémentation des points
et le message "game over" à la fin
Tu sais déjà comment capter un appui de touche avec bind et comment récupérer quelle touche avec event.keysym
Ensuite, quand ca tourne, tu peux ajouter tout le reste (photos, textes d'explications, etc …)
Enfin, si je peux me permettre: :-)
Ecris "Pour ce faire" plutôt que "Pour se faire"
"tant convoitée" plutôt que "tant convoité"
"mettre un terme" plutôt que "mettre un therme" (les thermes, c'est autre chose …)
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
2 mai 2020 à 19:18
2 mai 2020 à 19:18
Oui c'est exactement ça pour " si 1 a tapé "a" et 2 a tapé "c", c'est 2 qui gagne ? "
Très bien merci mon pour tes conseils je vais voir tout ça, j'ai jusqu’à fin mai j’espère que j'aurai le temps mdr
Et oui tu as bien fait de me corriger, je les avais pas vu, merci !
Je reviendrais surement en cas de soucis, donc n’hésite pas a revenir. Merci encore
Très bien merci mon pour tes conseils je vais voir tout ça, j'ai jusqu’à fin mai j’espère que j'aurai le temps mdr
Et oui tu as bien fait de me corriger, je les avais pas vu, merci !
Je reviendrais surement en cas de soucis, donc n’hésite pas a revenir. Merci encore
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
2 mai 2020 à 20:33
2 mai 2020 à 20:33
Pas de problème !
Pour ton chrono, il faut que tu importes la bibliothèque datetime
Sur le net il y a des tutos pour l'exploiter …
Pour ton chrono, il faut que tu importes la bibliothèque datetime
Sur le net il y a des tutos pour l'exploiter …
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
Modifié le 3 mai 2020 à 19:05
Modifié le 3 mai 2020 à 19:05
Salut, j'ai avancé sur le projet et suivi tes conseils. Enfin pas tous mdr. Pour le chrono avec datetime j'ai pas réussi a trouver ce que je voulais donc j'ai fait comme ça:
Le probleme c'est que ici "salut" ne se répète pas toutes les 3s
donc je voulais avoir ton avis là-dessus.
from threading import Thread, Event class Chrono(Thread): def __init__(self, event): Thread.__init__(self) self.event = event def run(self): while not self.event.wait(3): print("salut") flag_stop = Event() chrono = Chrono(flag_stop) chrono.start() #Quand tu veux l'arrêter : flag_stop.set()
Le probleme c'est que ici "salut" ne se répète pas toutes les 3s
donc je voulais avoir ton avis là-dessus.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
3 mai 2020 à 19:15
3 mai 2020 à 19:15
Si ca marche pourquoi pas ?
A quoi sert la ligne time.sleep(50000) ? ca marche sans ça ...
On peut aussi faire ça:
A quoi sert la ligne time.sleep(50000) ? ca marche sans ça ...
On peut aussi faire ça:
from threading import * def top(): t = Timer(3.0, top) t.start() print("Top !") top()
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
Modifié le 3 mai 2020 à 19:34
Modifié le 3 mai 2020 à 19:34
c'est vrai mais le probleme c'est que ca matche pas avec l'objectif. Donc je vais utiliser:
Du coup maintenant il faut que je fasse l’attribution des touches c'est ça ?
from threading import Thread, Event class Chrono(Thread): def __init__(self, event): Thread.__init__(self) self.event = event def run(self): while not self.event.wait(3): print("salut") flag_stop = Event() chrono = Chrono(flag_stop) chrono.start() #Quand tu veux l'arrêter : flag_stop.set()
Du coup maintenant il faut que je fasse l’attribution des touches c'est ça ?
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
3 mai 2020 à 21:21
3 mai 2020 à 21:21
Petite update, oubli ce que t'as vu plus haut: j'ai utilisé un autre code pour relancer la fonction toutes les 3s et j'ai ensuite importe tkinter mais j'ai un message d'erreur : assert group is None, "group argument must be None for now". Voici le code, est ce que tu sais comment régler ça?
from tkinter import * from threading import Thread, Event Mafenetre=Tk() Mafenetre.geometry('1400x800') Mafenetre.attributes("-fullscreen",0) Mafenetre.title("STREET KO le meilleur jeu de bagarre") can1=Canvas(Mafenetre,width=1400,height=800,bg='yellow') can1.place(x=0,y=0) class Chrono(Thread): def init(self, event): Thread.init(self) self.event = event def run(self): while not self.event.wait(3): print("salut") flag_stop = Event() chrono = Chrono(flag_stop) chrono.start() Mafenetre.mainloop()
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
4 mai 2020 à 11:56
4 mai 2020 à 11:56
Bonjour Antoine451833,
Qu'entends-tu par "ca matche pas avec l'objectif." ?
Le code que je t'ai donné écrit Top! sur l'écran toutes les 3 secondes, non ?
Mais bon ..... puisque tu as trouvé encore autre chose ...
A part ça, as-tu testé le code de ton message de 19h26 ?
Déjà, là, ca ne marche pas : il ne se passe rien, la fonction run de la classe Chrono n'est jamais
appelée !
D'où sors-tu cette mécanique ?
Tu fait des copier/coller sans vraiment comprendre, non ?
Qu'entends-tu par "ca matche pas avec l'objectif." ?
Le code que je t'ai donné écrit Top! sur l'écran toutes les 3 secondes, non ?
Mais bon ..... puisque tu as trouvé encore autre chose ...
A part ça, as-tu testé le code de ton message de 19h26 ?
Déjà, là, ca ne marche pas : il ne se passe rien, la fonction run de la classe Chrono n'est jamais
appelée !
D'où sors-tu cette mécanique ?
Tu fait des copier/coller sans vraiment comprendre, non ?
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
4 mai 2020 à 12:30
4 mai 2020 à 12:30
Bonjour Phil_1857
J'ai échangé avec une communauté de fan python sur discord et on est arrivé a ce code. Mais il est vrai que je n'est pas compris. Je me suis laissé emballé, il y a eu beaucoup de rebondissement pour pas grand chose mdr.
C'est vrai que ton code me parait bien, je vais étudier ça.
Avec mon binôme on va repartir sur quelque chose plus a notre niveau. Je t'informerais des éventuelles avancé et de nos soucis. Merci d’interagir avec nous.
J'ai échangé avec une communauté de fan python sur discord et on est arrivé a ce code. Mais il est vrai que je n'est pas compris. Je me suis laissé emballé, il y a eu beaucoup de rebondissement pour pas grand chose mdr.
C'est vrai que ton code me parait bien, je vais étudier ça.
Avec mon binôme on va repartir sur quelque chose plus a notre niveau. Je t'informerais des éventuelles avancé et de nos soucis. Merci d’interagir avec nous.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 4 mai 2020 à 13:58
Modifié le 4 mai 2020 à 13:58
Super!
Toujours partir d'un truc simple et ajouter petit à petit
Je ne sais pas si ça peut aider (il faut voir), mais voici une nouvelle direction en Tkinter, pas en mode console :
une fonction qui s'appelle elle-même toutes les 3 secondes ... à voir si ca peut aller ou pas
(boucle infinie, dedans, il faut un test if pour arrêter à un moment donné)
Toujours partir d'un truc simple et ajouter petit à petit
Je ne sais pas si ça peut aider (il faut voir), mais voici une nouvelle direction en Tkinter, pas en mode console :
def repete(): le code mon_canvas.after(3000, repete)
une fonction qui s'appelle elle-même toutes les 3 secondes ... à voir si ca peut aller ou pas
(boucle infinie, dedans, il faut un test if pour arrêter à un moment donné)
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
4 mai 2020 à 23:47
4 mai 2020 à 23:47
Salut Phil, on a beaucoup avancé, j'avais pas vu ton dernier post donc j'ai fait différemment. C'est encore le début tout n'est pas totalement opérationnel mais on on a une syntax erreur ligne 19 et 21, ça doit être tout bête mais je vois pas le pb. Dit moi ce que tu en penses et si tu sais comment régler ça. Merci pour tes retours.
def scene(): joueur1=[R,Rpoint,Rpoint2] joueur2=[B,Bpoint,Bpied] touches = [] can1.focus_set() can1.bind("<KeyPress>",pressed) can1.bind("<KeyRelease>",released) scene2() def scene2(): global joueur1,joueur2 if t=="A" and t in touches: can1.create_image(100,100,image=joueur1[0]) toucheA="A" if t=="M" and t in touches: can1.create_image(200,100,image=joueur2[0]) toucheB="M" if toucheA="A" and toucheB="M" : score1=score1+1 if toucheA="A" and toucheB="P" : score2=score2+1 #bouton bou7 =Button(Mafenetre, text="pause", width =10,borderwidth=0, command=pause) bou7.place(x=100,y=720) can1.after(100,scene2) def pressed(event): #on rajoute la touche pressée dans la liste touches si elle n’y est pas déjà global touches t = event.keysym.upper() if not t in touches: touches.append(t) def released(event): #on enlève la touche relachée de la liste touches t = event.keysym.upper() if t in touches: touches.remove(t)
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
5 mai 2020 à 09:08
5 mai 2020 à 09:08
Salut Antoine_451833,
Ca saute aux yeux : tu as fait l'erreur classique que l'on peut faire dans n'importe quel langage de programmation, et pourtant lignes 12 et 15, c'est correct
Confondre toucheA = 'a' et toucheA == 'a'
Ca saute aux yeux : tu as fait l'erreur classique que l'on peut faire dans n'importe quel langage de programmation, et pourtant lignes 12 et 15, c'est correct
Confondre toucheA = 'a' et toucheA == 'a'
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
5 mai 2020 à 11:21
5 mai 2020 à 11:21
Mais oui bien-sur c’était tout bête. D'ailleurs cette parti du code (scene2) c'est notre prof qui nous a dit qu'elle était essentielle mais si je comprends: si la touche pressée est dans ma définition touche = [ ] alors le jours 1 prend l'image correspondante, idem pour joueur 2 et ensuite le score vari en fonction. C'est bien ça ?
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 5 mai 2020 à 11:36
Modifié le 5 mai 2020 à 11:36
si touche = A majuscule et qu'elle est dans la liste, affichage de l'image joueur[1][0]
idem avec la touche M …
Votre prof vous donne le code tout fait ?
idem avec la touche M …
Votre prof vous donne le code tout fait ?
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
5 mai 2020 à 12:18
5 mai 2020 à 12:18
D'accord je vois.
Il nous aide en nous mettant sur la piste et après c'est a nous de comprendre pour finir et corriger les beugs.
Du coup j'ai fait ça comme ça, donc si je comprends bien quand j’appuie sur "A" je devrais avoir l'image R. Mais j'ai "if t in touches: NameError: name 'touches' is not defined". Pourtant je lance d'abord ma fonction scène donc je créais bien touche et après j'envoie scene2 donc a quoi c'est dû?
Il nous aide en nous mettant sur la piste et après c'est a nous de comprendre pour finir et corriger les beugs.
Du coup j'ai fait ça comme ça, donc si je comprends bien quand j’appuie sur "A" je devrais avoir l'image R. Mais j'ai "if t in touches: NameError: name 'touches' is not defined". Pourtant je lance d'abord ma fonction scène donc je créais bien touche et après j'envoie scene2 donc a quoi c'est dû?
R=PhotoImage(file="rut.png") Rpoint=PhotoImage(file="rut_point.png") Rpoint2=PhotoImage(file="rut_point2.png") B=PhotoImage(file="bob.png") Bpoint=PhotoImage(file="bob_point.png") Bpied=PhotoImage(file="bob_pied.png") def scene(): joueur1=[R,Rpoint,Rpoint2] joueur2=[B,Bpoint,Bpied] touches = ["A","M"] can1.focus_set() can1.bind("<KeyPress>",pressed) can1.bind("<KeyRelease>",released) scene2() def scene2(): global joueur1,joueur2 t = event.keysym.upper() if t=="A" and t in touches: can1.create_image(100,100,image=joueur1[0]) toucheA="A" if t=="M" and t in touches: can1.create_image(200,100,image=joueur2[0]) toucheB="M" if toucheA=="A" and toucheB=="M" : score1=score1+1 if toucheA=="A" and toucheB=="P" : score2=score2+1 #bouton bou7 =Button(Mafenetre, text="pause", width =10,borderwidth=0, command=pause) bou7.place(x=100,y=720) can1.after(100,scene2) def pressed(event): #on rajoute la touche pressée dans la liste touches si elle n’y est pas déjà global touches t = event.keysym.upper() if not t in touches: touches.append(t) def released(event): #on enlève la touche relachée de la liste touches t = event.keysym.upper() if t in touches: touches.remove(t)
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 5 mai 2020 à 13:48
Modifié le 5 mai 2020 à 13:48
Tu devrais mettre le code complet qu'on y voie clair ...
En attendant, ton problème est un problème d'espaces de noms
Je regarde ton code précédent, car tu as fait des modifs dans ce message-ci
La variable touches est initialisée dans la fonction scene() : touches = [] (liste vide)
Donc elle est connue uniquement dans cette fonction, mais pas en dehors de celle-ci
et donc dans scene2(), elle est inconnue
Un indice:
Parmi les 4 fonctions, il y en a une qui est bien écrite : pressed(), la 1ere ligne de cette fonction est importante ...
En attendant, ton problème est un problème d'espaces de noms
Je regarde ton code précédent, car tu as fait des modifs dans ce message-ci
La variable touches est initialisée dans la fonction scene() : touches = [] (liste vide)
Donc elle est connue uniquement dans cette fonction, mais pas en dehors de celle-ci
et donc dans scene2(), elle est inconnue
Un indice:
Parmi les 4 fonctions, il y en a une qui est bien écrite : pressed(), la 1ere ligne de cette fonction est importante ...
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
5 mai 2020 à 14:10
5 mai 2020 à 14:10
J'imagine que tu fais référence au: global touches dans pressed()
Cependant avant de t'envoyer j'avais mis en global touches pour que scene2() puisse l'utiliser mais la le programme ne réagissais plus a l'appuie des touches (avant comme réaction c’était une erreur) j'avais donc enlevé en me disais que c’était autre chose.
Du coup soit tu fais pas référence au global soit c'est vraiment ça et du coup nouveau probleme mdr: line 194, in scene2
t = event.keysym.upper()
NameError: name 'event' is not defined
Je renvoie la totalité du code du coup au risque que ça soit "toufu":
Cependant avant de t'envoyer j'avais mis en global touches pour que scene2() puisse l'utiliser mais la le programme ne réagissais plus a l'appuie des touches (avant comme réaction c’était une erreur) j'avais donc enlevé en me disais que c’était autre chose.
Du coup soit tu fais pas référence au global soit c'est vraiment ça et du coup nouveau probleme mdr: line 194, in scene2
t = event.keysym.upper()
NameError: name 'event' is not defined
Je renvoie la totalité du code du coup au risque que ça soit "toufu":
#-----------------------------PARAMETRE NECESSAIRE------------------------------ from tkinter import * from tkinter.messagebox import * import pygame #fenetre graphique Mafenetre=Tk() Mafenetre.geometry('1400x800') Mafenetre.attributes("-fullscreen",0) Mafenetre.title("STREET KO le meilleur jeu de bagarre") #-------------------------------PAGE D'OUVERTURE-------------------------------- def menu1(): global cand,fondepart cand=Canvas(Mafenetre,width=1400,height=800,bg='yellow') cand.place(x=0,y=0) image_fond=cand.create_image(0,0,image=fondepart,anchor="nw") cand.focus_set() cand.bind("<Key>",test_entree) def test_entree(event): touche=event.keysym if touche=="Return" : menu() #-------------------------------MENU ET SOUS MENU------------------------------- def menu(): global can1,fond,bou1,bou2,bou3,bou5,image_fond can1=Canvas(Mafenetre,width=1400,height=800,bg='yellow') can1.place(x=0,y=0) image_fond=can1.create_image(0,0,image=fond,anchor="nw") #bouton bou1=Button(Mafenetre,text="Quitter",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=quitter) bou1.place(x=65,y=500) bou2=Button(Mafenetre,text="Règles",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=regles) bou2.place(x=65,y=240) bou3=Button(Mafenetre,text="Commencer",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0,font=('Fixedsys', '20'), command=switch) bou3.place(x=65,y=110) bou5=Button(Mafenetre,text="Histoire",fg="#ffffff",width=250,height=50,image=bouton,compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=histoire) bou5.place(x=65,y=370) #griser #bool_hitoire==False #if bool_hitoire==False : #bou2=Button(Mafenetre,text="Règles",fg="#ffffff",width=220,height=40,image=bouton_gris,compound=CENTER,borderwidth=0,command=menu) #bou2.place(x=215,y=240) #else : #bou2=Button(Mafenetre,text="Règles",fg="#ffffff",width=220,height=40,image=bouton,compound=CENTER,borderwidth=0,command=regles) #bou2.place(x=215,y=240) def reset(): global bou1,bou2,bou3,bou5 bou1.place_forget() bou2.place_forget() bou3.place_forget() bou5.place_forget() def histoire(): global can1,image_fond,bou4, bou6,ennonce1, bou8 reset() can1.itemconfig(image_fond,image=H) can1.focus_set() #texte text1="Il fut un temps où les guerres faisaient rage. Impac-" text2="tant la galaxie entière des millions de victimes ont" text3="été déplorés. L'objectif était toujours le même le dé-" text4="sir ardent d'être le plus puissant. Les dirigeants des" text5="quatre-coints de la galaxie en perdaient la raison." text6="C'est alors qu'un scientifique neutre créa deux comba-" text7="ttants hors-pairs, Rut et Bob. Tout juste sortis du" text8="four ils etaient déjà impliqués dans le combat. Alors" text9="dotés de capacités sans pareil, ils mirent fin à ces" text10="guerres et acquierent de nouveaux pouvoirs. Des années" text11="plus tard ils sont de nouveau reunis mais cette fois" text12="pour s'affronter. Le combat aura lieu à la plage 4586," text13="sous un soleil tropical où les deux compagnons ont par" text14="le passé mis un terme à ces guerres. L'issue du com" text15="-bat sera décisive pour le futur. Afin d'en connaître" text16="d'avantage veuillez prendre connaissance des règles." textefinal=text1+'\n'+text2+'\n'+text3+'\n'+text4+'\n'+text5+'\n'+text6+'\n'+text7+'\n'+text8+'\n'+text9+'\n'+text10+'\n'+text11+'\n'+text12+'\n'+text13+'\n'+text14+'\n'+text15+'\n'+text16 ennonce1=can1.create_text(895,340,text=textefinal,fil="white", font=('Fixedsys', '18')) #bouton bou4=Button(Mafenetre,text="Menu principal",fg="#ffffff",width=250,height=50,image=bouton, compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=menu) bou4.place(x=450,y=690) bou6=Button(Mafenetre,text="Règles",fg="#ffffff",width=250,height=50,image=bouton3, foreground="black", compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=reset_regles) bou6.place(x=790,y=690) bou8=Button(Mafenetre,text="règles.",fg="#ffffff",width=115,height=25,image=bouton2, compound=CENTER,borderwidth=0, font=('Fixedsys', '18'), command=reset_regles) bou8.place(x=1180,y=550) def reset_histoire(): global bou7,bou9, can1,enonce2 bou7.place_forget() bou9.place_forget() can1.itemconfig(ennonce2,text="") histoire() def regles(): global can1,image_fond, bou7, bou9,ennonce2 reset() can1.itemconfig(image_fond,image=R) can1.focus_set() #texte text1="Suivant le personnage que vous in-" text2="carnez, Rut ou Bob, votre objectif" text3="est de terrasser votre adversaire." text4="Pour ce faire vous devez enchaîner" text5="les combinaisons de touche afin de" text6="gagner le combat. Ainsi il est con-" text7="seillé de prendre connaissance des" text8="commandes afin d'etablir une stra-" text9="tégie solide. L'enjeu de ce combat" text10="est de déterminer le futur époux" text11="de la princesse Sofya tant convoi-" text12="tée. Donner tout ce que vous avez" text13="pour chopper cette BOMBE !!!!!!!!!" textefinal2=text1+'\n'+text2+'\n'+text3+'\n'+text4+'\n'+text5+'\n'+text6+'\n'+text7+'\n'+text8+'\n'+text9+'\n'+text10+'\n'+text11+'\n'+text12+'\n'+text13 ennonce2=can1.create_text(370,365,text=textefinal2,fil="white", font=('Fixedsys', '18')) #bouton bou7=Button(Mafenetre,text="Menu principal",fg="#ffffff",width=250,height=50,image=bouton, compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=menu) bou7.place(x=450,y=690) bou9=Button(Mafenetre,text="Histoire",fg="#ffffff",width=250,height=50,image=bouton3, foreground="black", compound=CENTER,borderwidth=0, font=('Fixedsys', '20'), command=reset_histoire) bou9.place(x=790,y=690) def reset_regles(): global bou4,bou6, can1,enonce1, bou8 bou4.place_forget() bou6.place_forget() bou8.place_forget() can1.itemconfig(ennonce1,text="") regles() def quitter(): if askyesno("Fenêtre décisive", "Êtes-vous sûr de vouloir faire ça?"): Mafenetre.destroy() else: showinfo("Fenêtre du meilleur choix", "Vous avez bien raison!") #------------------------------------JEUX--------------------------------------- #-----------------------------fonction avant jeux------------------------------- def song(): launched = True pygame.init() song = pygame.mixer.Sound("fight_song.wav") song.play() while launched: for even in pygame.event.get(): if even.type == pygame.QUIT: launched = False def switch(): global Pchoisi reset() #song() can1.itemconfig(image_fond, image=mes_photos[Pchoisi]) Pchoisi += 1 if Pchoisi==5: can1.itemconfig(image_fond,image=D) scene() else : Mafenetre.after(100, switch) #importation des images p1=PhotoImage(file="Decort.png") p2=PhotoImage(file="3.png") p3=PhotoImage(file="2.png") p4=PhotoImage(file="1.png") p5=PhotoImage(file="Pdecort.png") mes_photos = [p2, p3, p4, p5 ,p1] Pchoisi = 0 #-------------------------------scene de combat--------------------------------- #importation des images R=PhotoImage(file="rut.png") Rpoint=PhotoImage(file="rut_point.png") Rpoint2=PhotoImage(file="rut_point2.png") B=PhotoImage(file="bob.png") Bpoint=PhotoImage(file="bob_point.png") Bpied=PhotoImage(file="bob_pied.png") def scene(): global touches joueur1=[R,Rpoint,Rpoint2] joueur2=[B,Bpoint,Bpied] touches = ["A","M"] can1.focus_set() can1.bind("<KeyPress>",pressed) can1.bind("<KeyRelease>",released) scene2() def scene2(): global joueur1,joueur2,touches t = event.keysym.upper() if t=="A" and t in touches: can1.create_image(100,100,image=joueur1[0]) toucheA="A" if t=="M" and t in touches: can1.create_image(200,100,image=joueur2[0]) toucheB="M" if toucheA=="A" and toucheB=="M" : score1=score1+1 if toucheA=="A" and toucheB=="P" : score2=score2+1 #bouton bou7 =Button(Mafenetre, text="pause", width =10,borderwidth=0, command=pause) bou7.place(x=100,y=720) can1.after(100,scene2) def pressed(event): #on rajoute la touche pressée dans la liste touches si elle n’y est pas déjà global touches t = event.keysym.upper() if not t in touches: touches.append(t) def released(event): #on enlève la touche relachée de la liste touches global touches t = event.keysym.upper() if t in touches: touches.remove(t) def pause(): global pause pass #-----------------------------PARAMETRE NECESSAIRE------------------------------ #importation des images fond=PhotoImage(file="Menu.png") fondepart=PhotoImage(file="Pmenu.png") D=PhotoImage(file="Decort.png") H=PhotoImage(file="Histoire.png") R=PhotoImage(file="Regles.png") bouton=PhotoImage(file="bouton.png") bouton2=PhotoImage(file="bouton2.png") bouton3=PhotoImage(file="bouton3.png") PosX=200 PosY=200 #lancement du menu menu1() Mafenetre.mainloop()
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 5 mai 2020 à 14:22
Modifié le 5 mai 2020 à 14:22
Je vais regarder tout ça, mais en attendant, il faut global touches dans toutes les fonctions ou
touches est utilisée, touches est une variable globale et donc il faut l'inclure partout
le code est touffu, mais je t'avais dit de ne pas inclure de suite les textes et les images pour tester la mécanique globale,
ce n'est pas indispensable
Je n'ai pas tes images, mais je vais me débrouiller ...
touches est utilisée, touches est une variable globale et donc il faut l'inclure partout
le code est touffu, mais je t'avais dit de ne pas inclure de suite les textes et les images pour tester la mécanique globale,
ce n'est pas indispensable
Je n'ai pas tes images, mais je vais me débrouiller ...
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
5 mai 2020 à 15:15
5 mai 2020 à 15:15
J'ai incrusté touches partout ou c’était nécessaire il me semble.
Si tu veux envoie moi ton e-mail et je t’envoie le tout en fichier compressé
Si tu veux envoie moi ton e-mail et je t’envoie le tout en fichier compressé
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 5 mai 2020 à 15:35
Modifié le 5 mai 2020 à 15:35
in scene2
t = event.keysym.upper()
NameError: name 'event' is not defined
le nom 'event' n'est pas défini
C'est évident: à l'intérieur de scene2, event, il sortirait d'où ?
Regarde la définition de cette fonction avec celle de pressed par exemple …
Tu ne vois pas une différence ?
t = event.keysym.upper()
NameError: name 'event' is not defined
le nom 'event' n'est pas défini
C'est évident: à l'intérieur de scene2, event, il sortirait d'où ?
Regarde la définition de cette fonction avec celle de pressed par exemple …
Tu ne vois pas une différence ?
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
5 mai 2020 à 17:26
5 mai 2020 à 17:26
Donc j'imagine qu'il faut faire comme ça:
Cependant maintenant j'ai ça :( j'ai l'impression de ne pas avancer
in scene
scene2()
TypeError: scene2() missing 1 required positional argument: 'event'
def scene2(event): global joueur1,joueur2,touches t = event.keysym.upper() if t=="A" and t in touches: can1.create_image(100,100,image=joueur1[0]) toucheA="A" if t=="M" and t in touches: can1.create_image(200,100,image=joueur2[0]) toucheB="M" if toucheA=="A" and toucheB=="M" : score1=score1+1 if toucheA=="A" and toucheB=="P" : score2=score2+1 #bouton bou7 =Button(Mafenetre, text="pause", width =10,borderwidth=0, command=pause) bou7.place(x=100,y=720) can1.after(100,scene2)
Cependant maintenant j'ai ça :( j'ai l'impression de ne pas avancer
in scene
scene2()
TypeError: scene2() missing 1 required positional argument: 'event'
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 5 mai 2020 à 15:42
Modifié le 5 mai 2020 à 15:42
Je t'avais dit de commencer simple quel foutoir avec toutes ces images et définies a plusieurs
endroits !
On pouvait commencer avec des boutons normaux pour tester
Sinon, tu savais qu'on pouvait faire ça:
fill avec 2 l !
Plus simple que tout tes text1=, text2=, ...
endroits !
On pouvait commencer avec des boutons normaux pour tester
Sinon, tu savais qu'on pouvait faire ça:
info = ''' Il fut un temps où les guerres faisaient rage. Impactant la galaxie entière des millions de victimes ont été déplorés ''' enonce1=can1.create_text(895,340,text=info, fill ="white", font=('Fixedsys', '18'))
fill avec 2 l !
Plus simple que tout tes text1=, text2=, ...
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
Modifié le 5 mai 2020 à 18:32
Modifié le 5 mai 2020 à 18:32
J'ai lancé pour voir le résultat. Mais info apparait comme une fenêtre appart sans design et le but de notre jeux est de proposer une interface conforme aux jeux vidéos, tu n'as pas les photos donc tu vois pas l’intérêt d'avoir text1, text2.. Mais ils sont essentielles.
En tout cas merci d'avoir proposer une intervalle plus allégé.
En tout cas merci d'avoir proposer une intervalle plus allégé.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
5 mai 2020 à 16:49
5 mai 2020 à 16:49
Comme je te le disais, commencer petit et ajouter ensuite ...
Trop compliqué ton code avec tous ces boutons que l'on créé puis que l'on cache, et que l'on reset, et toutes ces définitions de Canvas inutiles, et il y en a partout !
Et ce 1er appui sur Return qui affiche le menu ...
A mon avis, on n'a pas besoin de tout ça ! il y a plus simple
J'ai fait un début de code tout simple, teste-le et regarde bien la structure:
_ les définitions de fonctions en 1er
_ puis l'interface graphique avec Canvas et boutons, tout objet graphique doit regroupé ici
L'appui sur les boutons règles et histoire affiche le texte dans une fenêtre secondaire qui s'ouvre
Les textes sont définis en 1 seul bloc, c'est plus facile pour modifier ou ajouter des lignes
Il y a a juste à cliquer sur la croix en haut pour fermer les fenêtres une fois lues
Les bouton restent tout le temps en bas de fenêtre, mais pourquoi pas ?
pourquoi les cacher ? Ca n'empêche pas de jouer
Ensuite il faut ajouter le code pour déclencher le jeu ...
Trop compliqué ton code avec tous ces boutons que l'on créé puis que l'on cache, et que l'on reset, et toutes ces définitions de Canvas inutiles, et il y en a partout !
Et ce 1er appui sur Return qui affiche le menu ...
A mon avis, on n'a pas besoin de tout ça ! il y a plus simple
J'ai fait un début de code tout simple, teste-le et regarde bien la structure:
_ les définitions de fonctions en 1er
_ puis l'interface graphique avec Canvas et boutons, tout objet graphique doit regroupé ici
L'appui sur les boutons règles et histoire affiche le texte dans une fenêtre secondaire qui s'ouvre
Les textes sont définis en 1 seul bloc, c'est plus facile pour modifier ou ajouter des lignes
Il y a a juste à cliquer sur la croix en haut pour fermer les fenêtres une fois lues
Les bouton restent tout le temps en bas de fenêtre, mais pourquoi pas ?
pourquoi les cacher ? Ca n'empêche pas de jouer
Ensuite il faut ajouter le code pour déclencher le jeu ...
# -*- coding:Latin-1 -*- from tkinter import * def regles(): ''' affichage des règles dans une fenetre secondaire ''' fenetre_secondaire = Toplevel(Mafenetre) fenetre_secondaire.geometry('410x200+450+300') zone_graphique_secondaire = Canvas(fenetre_secondaire,bg='ivory',height=190,width=400) zone_graphique_secondaire.place(x = 5,y = 5) info = ''' Suivant le personnage que vous incarnez, Rut ou Bob, votre objectif est de terrasser votre adversaire. Pour ce faire vous devez enchaîner les combinaisons de touches afin de gagner le combat. Ainsi il est conseillé de prendre connaissance des commandes afin d'etablir une stratégie solide. L'enjeu de ce combat est de déterminer le futur époux de la princesse Sofya tant convoitée. Donnez tout ce que vous avez pour la séduire !!!!!!!!! ''' zone_graphique_secondaire.create_text(5,5,text=info, anchor = NW, fill = 'blue') def histoire(): ''' affichage de l'histoire dans une fenetre secondaire ''' fenetre_secondaire = Toplevel(Mafenetre) fenetre_secondaire.geometry('410x200+450+300') zone_graphique_secondaire = Canvas(fenetre_secondaire,bg='ivory',height=190,width=400) zone_graphique_secondaire.place(x = 5,y = 5) info = ''' Il fut un temps où les guerres faisaient rage. Impactant la galaxie entière des millions de victimes ont été déplorés. L'objectif était toujours le même le désir ardent d'être le plus puissant. etc ......... ''' zone_graphique_secondaire.create_text(5,5,text=info,anchor = NW, fill = 'blue') def switch(): ''' ''' pass #Interface graphique Mafenetre=Tk() Mafenetre.geometry('700x400+300+100') Mafenetre.title("STREET KO le meilleur jeu de bagarre") cand=Canvas(Mafenetre,bg='yellow', height=350, width=700) cand.place(x=0,y=0) bou2=Button(Mafenetre,text="Règles",command=regles) bou2.place(x=10,y=370) bou3=Button(Mafenetre,text="Commencer", command=switch) bou3.place(x=75,y=370) bou5=Button(Mafenetre,text="Histoire", command=histoire) bou5.place(x=170,y=370) Mafenetre.mainloop()
Antoine451833
Messages postés
47
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
13 mai 2020
Modifié le 5 mai 2020 à 18:26
Modifié le 5 mai 2020 à 18:26
Pour tes deux dernier message je garde ça de cote, même si pour toi c'est foutoirs, et je comprends tout a fait, j'ai appris comme ça et je sais que tout fonctionne comme je le veux.
Mais ta manière de faire ma l'aire bien plus simple effectivement donc je garde ça précieusement et une fois que tout sera fonctionnelle je ferais au mieux pour optimiser. En attendant soit compréhensif et essaye de faire abstraction si tu le peux.
Mais ta manière de faire ma l'aire bien plus simple effectivement donc je garde ça précieusement et une fois que tout sera fonctionnelle je ferais au mieux pour optimiser. En attendant soit compréhensif et essaye de faire abstraction si tu le peux.
2 mai 2020 à 12:41
j'avais déjà pris connaissance de ces règles. C'est pourquoi je demande des conseils pour pouvoir m'orienter et non le code complet. Je n'arrive pas sans rien, comme précisé j'ai déjà codé l'intégralité de mon menu cependant c'est ici que je bloque, je peux donc vous partager mon code mais rien dedans ne concerne mon problème. En espérant que tu puisses m'aider après ça.