A voir également:
- Programmation d'un circuit
- Application de programmation - Guide
- Logiciel typon circuit imprimé gratuit - Télécharger - Vie quotidienne
- Programmer un sms - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Mettre en veille un programme - Guide
12 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 févr. 2021 à 17:02
2 févr. 2021 à 17:02
Bonjour Neirdah,
Vaste sujet !
C'est un programme graphique ?
En 2D, donc en vue de dessus du circuit ?
Ou en 3D, donc avec les perspectives et tout et tout ?
Vaste sujet !
C'est un programme graphique ?
En 2D, donc en vue de dessus du circuit ?
Ou en 3D, donc avec les perspectives et tout et tout ?
Alors c'est un programme en 2D, le format 3D n'étant pas judicieux étant donné que l'on veut faire un jeu de gestion.
Le but sera de gérer sa voiture, la faire rentrer au stand dans les bons temps pour gagner la course.
Nous avons commencer à coder certaines fonctions.
Il nous manque tout de même l'essentiel, étant de modélisé la voiture par un point circulant sur le circuit.
Nous avons entendu parler des courbes de Béziers mais nous ne savons pas trop comment les mettre en œuvres.
Le but sera de gérer sa voiture, la faire rentrer au stand dans les bons temps pour gagner la course.
Nous avons commencer à coder certaines fonctions.
Il nous manque tout de même l'essentiel, étant de modélisé la voiture par un point circulant sur le circuit.
Nous avons entendu parler des courbes de Béziers mais nous ne savons pas trop comment les mettre en œuvres.
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 2 févr. 2021 à 17:39
Modifié le 2 févr. 2021 à 17:39
Ah ok, la voiture est simplement un point..
Les courbes de Bézier, c'est pour la forme du circuit ?
Et pourquoi pas une suite d'arcs de cercle ?
Ce serait plus simple, les courbes de Bézier sont pilotées par des points externes appelés
points de contrôle, et ce n'est pas facile à mettre en œuvre, il faut utiliser des équations
paramétriques du genre x(t)=... et y(t)= ...
Les courbes de Bézier, c'est pour la forme du circuit ?
Et pourquoi pas une suite d'arcs de cercle ?
Ce serait plus simple, les courbes de Bézier sont pilotées par des points externes appelés
points de contrôle, et ce n'est pas facile à mettre en œuvre, il faut utiliser des équations
paramétriques du genre x(t)=... et y(t)= ...
C'est notre prof de math qui nous a proposé de faire cela avec les courbes de Béziers mais une suite d'arc de cercle semble pertinente.
Je ne vois par contre pas bien comment faire cela et faire ensuite circulé la voiture dessus.
Je ne vois par contre pas bien comment faire cela et faire ensuite circulé la voiture dessus.
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
3 févr. 2021 à 12:00
3 févr. 2021 à 12:00
Bonjour Neirdah,
Comment as-tu fait ton interface graphique ?
Avec la bibliothèque Tkinter, ou autre ?
Il est facile de dessiner des arcs de cercle et un petit cercle qui représenterai la voiture ..
Comment as-tu fait ton interface graphique ?
Avec la bibliothèque Tkinter, ou autre ?
Il est facile de dessiner des arcs de cercle et un petit cercle qui représenterai la voiture ..
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 3 févr. 2021 à 20:02
Modifié le 3 févr. 2021 à 20:02
Peux-tu nous afficher le code de ton interface ici, en appliquant les balises de code ?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
On pourrait voir ce que l'on peut faire ...
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
def test(): print('test') test()
On pourrait voir ce que l'on peut faire ...
Bonjour,
globalement j'ai cela :
J'ai aussi l'insertion d'une image que j'aimerai mettre en fond des pages.
globalement j'ai cela :
from tkinter import * import random as rd class Menu() : WIDTH=1000 HEIGHT=500 def __init__(self) : self.f = Tk() self.f.title('Les 24 Heures Du Mans') self.f.config(bg = '#A4A4A4') self.f.geometry('1000x500') self.f.iconbitmap(r'C:\Users\lbhad\OneDrive\Documents\BCPST\2\Informatique\circuit_entier.ico') l=Label(self.f, text = 'Bienvenue dans Le Mans, Le jeu', bg = '#A4A4A4' ).pack() l0=Label(self.f, text = "Ceci est un jeu de simulation visant à recréer différentes années de la célèbre course des 24h du Mans.\nVous allez être projeté au coeur de l'une de ces années avec pour objectif de réussir à gagner.\nPlusieurs paramètres seront pris en compte pour cela.\nNous vous laissons découvrir tout cela... Bon jeu !", bg = '#A4A4A4').pack() b0 = Button(self.f, width = '10', text = 'Suite !', bg = '#A4A4A4', command=self.s).pack() bEnd = Button(self.f, text = 'Quitter', command = self.destroyf).pack(side=BOTTOM) self.f.mainloop() def Ecuries(self) : self.f1 = Tk() self.f1.title('Les 24 Heures Du Mans') self.f1.config(bg = '#A4A4A4') self.f1.geometry('1000x500') l1 = Label(self.f1, text = 'Veuillez choisir votre écurie.', bg = '#A4A4A4').pack() l2 = Label(self.f1, text = 'Attention, chaque écurie possède ses propres caractéristiques !', bg = '#A4A4A4', fg = '#B40431').pack() l3 = Label(self.f1, text = 'Bon jeu !', bg = '#A4A4A4').pack() b1 = Button(self.f1, width = '10', text = "Ferrari", bg = '#A4A4A4', fg = '#FF0040', command=self.s1).pack() b2 = Button(self.f1, width = '10', text = 'Alpine', bg = '#A4A4A4', command=self.s1).pack() b3 = Button(self.f1, width = '10', text = 'Porsche', bg = '#A4A4A4', fg = '#F3F781', command=self.s1).pack() b4 = Button(self.f1, width = '10', text = 'Ford', bg = '#A4A4A4', fg = '#2E2EFE', command=self.s1).pack() b5 = Button(self.f1, width = '10', text = 'Shelby', bg = '#A4A4A4', fg = '#01A9DB', command=self.s1).pack() b6 = Button(self.f1, width = '10', text = 'Austin', bg = '#A4A4A4', fg = '#088A08', command=self.s1).pack() bEnd = Button(self.f1, text = 'Quitter', command = self.destroyf1).pack(side=BOTTOM) self.f1.mainloop() def Boost(self) : self.f2 = Tk() self.f2.title('Les 24 Heures Du Mans') self.f2.config(bg = '#A4A4A4') self.f2.geometry('1000x500') value = DoubleVar() l1 = Label(self.f2, text = 'Les pneus', bg = '#A4A4A4').pack() c1 = Checkbutton(self.f2, width = '100' , text = 'Soft tires', bg = '#A4A4A4', fg = '#58FA58').pack() c2 = Checkbutton(self.f2, width = '100' , text = 'Medium tires', bg = '#A4A4A4', fg = '#DF7401').pack() c3 = Checkbutton(self.f2, width = '100' , text = 'Wet time tires', bg = '#A4A4A4', fg = '#DF0101').pack() l2 = Label(self.f2, text = 'Les spoilers', bg = '#A4A4A4').pack() c4 = Checkbutton(self.f2, width = '100' , text = 'Spoiler basique', bg = '#A4A4A4', fg = '#58FA58').pack() c5 = Checkbutton(self.f2, width = '100' , text = 'Spoiler élite', bg = '#A4A4A4', fg = '#DF0101').pack() l3 = Label(self.f2, text = 'Puissance moteur', bg = '#A4A4A4').pack() s1 = Scale(self.f2, bg = '#A4A4A4', orient = HORIZONTAL, variable = value).pack() b1 = Button(self.f2, width = '10', text = 'Suite !', bg = '#A4A4A4', command=self.s2).pack() bEnd = Button(self.f2, text = 'Quitter', command = self.destroyf2).pack(side=BOTTOM) self.f2.mainloop() def circuit(self) : self.f3 = Tk() self.f3.title('Les 24 Heures Du Mans') self.f3.config(bg = '#A4A4A4') self.f3.geometry(str(WIDTH)+'x'+str(HEIGHT)+'+300+100') l1 = Label(self.f3, width = 20, text = 'Vos options en jeu.', bg = '#A4A4A4').place(x = 850, y = 15) l2 = Label(self.f3, width = 20 , text = 'Retour au stand', bg = '#A4A4A4').place(x = 850,y = 100) l3 = Label(self.f3, width = 20, text = 'Etat des pneus', bg = '#A4A4A4').place(x = 850, y = 280) l4 = Label(self.f3, width = 20, text = "Jauge d'essence", bg = '#A4A4A4').place(x = 850, y = 350) b1 = Button(self.f3, width = 20, text = "Plein d'essence", bg = '#A4A4A4').place(x = 850, y = 120) b2 = Button(self.f3, width = 20, text = "Changement pour pneu\nmedium", bg = '#A4A4A4').place(x = 850, y = 150) b2 = Button(self.f3, width = 20, text = "Changement pour pneu\nmou", bg = '#A4A4A4').place(x = 850, y = 195) b2 = Button(self.f3, width = 20, text = "Changement pour pneu\npluie", bg = '#A4A4A4').place(x = 850, y = 240) bEnd = Button(self.f3, text ='Quitter', command = self.destroyf3).place(x = 450, y = 475) self.f3.mainloop() def s(self) : self.f.destroy() self.Ecuries() def s1(self) : self.f1.destroy() self.Boost() def s2(self) : self.f2.destroy() self.circuit() def destroyf(self) : self.f.destroy() def destroyf1(self) : self.f1.destroy() def destroyf2(self) : self.f2.destroy() def destroyf3(self) : self.f3.destroy() start = Menu()
J'ai aussi l'insertion d'une image que j'aimerai mettre en fond des pages.
from tkinter import * class Interface(Tk): def __init__(self, path_image): super(Interface, self).__init__() self.image = PhotoImage(file=path_image) self.w, self.h = self.image.width(), self.image.height() self.canvas = Canvas(self, width=self.w, height=self.h) self.canvas.pack() self.canvas.create_image((self.w//2, self.h//2), image=self.image) self.mainloop() Interface(r"C:\Users\lbhad\OneDrive\Documents\BCPST\2\Informatique\logo2.png")
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 févr. 2021 à 13:51
Modifié le 5 févr. 2021 à 13:51
Bonjour Neirdah,
Ces 2 codes ne sont pas dans le même fichier ?
Et c'est un peu bizarre de re créer une fenêtre principale a chaque saisie, mais bon ...
(self.f1 = Tk(), etc ...)
Ceci dit, pour dessiner le circuit, il faut créer un Canvas dans la fenêtre qui est dans la
fonction circuit , voir cours Tkinter sur le Net ...
Et dans un Canvas, on peut dessiner toutes sortes de figures géométriques
Ces 2 codes ne sont pas dans le même fichier ?
Et c'est un peu bizarre de re créer une fenêtre principale a chaque saisie, mais bon ...
(self.f1 = Tk(), etc ...)
Ceci dit, pour dessiner le circuit, il faut créer un Canvas dans la fenêtre qui est dans la
fonction circuit , voir cours Tkinter sur le Net ...
Et dans un Canvas, on peut dessiner toutes sortes de figures géométriques
Bonjour,
je suis d'accord que c'est un peu bizarre de faire de cette façon et d'ouvrir une nouvelle fenêtre à chaque fois mais je ne sais pas comment faire autrement.
Les deux codes ne sont pas dans le même fichier parce que je n'arrive pas à relier les codes (je ne suis pas très bon en tkinter aha)
Après pour ce qui est de la modélisation j'ai fait un dessin du circuit mais je ne sais pas comment faire pour que la voiture circule dessus.
je suis d'accord que c'est un peu bizarre de faire de cette façon et d'ouvrir une nouvelle fenêtre à chaque fois mais je ne sais pas comment faire autrement.
Les deux codes ne sont pas dans le même fichier parce que je n'arrive pas à relier les codes (je ne suis pas très bon en tkinter aha)
Après pour ce qui est de la modélisation j'ai fait un dessin du circuit mais je ne sais pas comment faire pour que la voiture circule dessus.
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
149
23 févr. 2021 à 15:41
23 févr. 2021 à 15:41
Salut
d'ouvrir une nouvelle fenêtre à chaque fois mais je ne sais pas comment faire autrement.
Il faut utiliser la méthode Toplevel() au lieu de Tk(). Le problème en faisant plusieurs appels à Tk(), tu as autant de mainloop(), ça peut perturber le processeur.
Si tu as x fenêtres à créer, tu fais 1 appel à Tk() et x-1 appels à Toplevel()
d'ouvrir une nouvelle fenêtre à chaque fois mais je ne sais pas comment faire autrement.
Il faut utiliser la méthode Toplevel() au lieu de Tk(). Le problème en faisant plusieurs appels à Tk(), tu as autant de mainloop(), ça peut perturber le processeur.
Si tu as x fenêtres à créer, tu fais 1 appel à Tk() et x-1 appels à Toplevel()
neirdah
>
dachiasse
Messages postés
1709
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
23 févr. 2021 à 15:44
23 févr. 2021 à 15:44
Salut,
Merci pour cette solution. Je vais creuser un peu cela car je ne sais pas du tout comment utiliser Toplevel.
Merci pour cette solution. Je vais creuser un peu cela car je ne sais pas du tout comment utiliser Toplevel.
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 10 févr. 2021 à 20:32
Modifié le 10 févr. 2021 à 20:32
Bonsoir Neirdah,
Rien n'empêche de mettre le contenu de ton 2eme code dans le premier
Mais ou exactement veux tu mettre ton image de fond de page ?
Car en fait, l'image principale de ta fenêtre, c'est un Canvas dans ta fonction circuit() et dans lequel tu vas dessiner ton circuit
" j'ai fait un dessin du circuit ...", donc tu l'as déjà dessiné graphiquement dans ta fenêtre , c'est
bien ça ou pas ?
Remarque: la fonction circuit plante car WIDTH et HEIGHT y sont inconnues
Rien n'empêche de mettre le contenu de ton 2eme code dans le premier
Mais ou exactement veux tu mettre ton image de fond de page ?
Car en fait, l'image principale de ta fenêtre, c'est un Canvas dans ta fonction circuit() et dans lequel tu vas dessiner ton circuit
" j'ai fait un dessin du circuit ...", donc tu l'as déjà dessiné graphiquement dans ta fenêtre , c'est
bien ça ou pas ?
Remarque: la fonction circuit plante car WIDTH et HEIGHT y sont inconnues
Bonjour,
Désolé de cette absence, nous avons profité de quelques congés.
Pour ce qui est de mon image de fond de page je souhaite la mettre sur les premières pages en fond avec le texte par dessus.
J'ai utilisé Gimp afin de créer une image réaliste du circuit et que j'aimerai donc insérer en fond afin que les voitures tournent dessus.
Je n'ai pas eu de problème particulier venant de WIDTH et HEIGHT
Désolé de cette absence, nous avons profité de quelques congés.
Pour ce qui est de mon image de fond de page je souhaite la mettre sur les premières pages en fond avec le texte par dessus.
J'ai utilisé Gimp afin de créer une image réaliste du circuit et que j'aimerai donc insérer en fond afin que les voitures tournent dessus.
Je n'ai pas eu de problème particulier venant de WIDTH et HEIGHT
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
23 févr. 2021 à 14:55
23 févr. 2021 à 14:55
Bonjour,
Je n'ai pas eu de problème particulier venant de WIDTH et HEIGHT
C'est sur qu'on ne voit rien en lançant le programme en double-cliquant sur le fichier, par exemple, mais en l'exécutant via IDLE, on voit ça:
File "C:\Phil\Dev\Python\tests\ccm\circuit.pyw", line 80, in circuit
self.f3.geometry(str(WIDTH)+'x'+str(HEIGHT)+'+300+100')
NameError: name 'WIDTH' is not defined
WIDTH n'est pas défini, normal, il est déclaré au début de la classe Menu(), mais dans la fonction circuit(), il est inconnu !
Je n'ai pas eu de problème particulier venant de WIDTH et HEIGHT
C'est sur qu'on ne voit rien en lançant le programme en double-cliquant sur le fichier, par exemple, mais en l'exécutant via IDLE, on voit ça:
File "C:\Phil\Dev\Python\tests\ccm\circuit.pyw", line 80, in circuit
self.f3.geometry(str(WIDTH)+'x'+str(HEIGHT)+'+300+100')
NameError: name 'WIDTH' is not defined
WIDTH n'est pas défini, normal, il est déclaré au début de la classe Menu(), mais dans la fonction circuit(), il est inconnu !