IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Mon projet en Python


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Mon projet en Python
    Bonjour à tous je me présente brièvement : Thibaut Wattelet je suis en Terminale et j'ai pour projet de faire un jeu.
    Le jeu serais un jeu de basket ou l'on définit la vitesse d'un ballon , l'angle de tir et la hauteur initiale.
    Je connais les équations de trajectoires , de ce coté pas de souci , mon 1er problème est le suivant :

    J'essaye de multiplier des variables mais je n'y arrive pas .

    Voici mon programme :




    from tkinter import *

    master = Tk()
    master.config(bg = "orange")






    Geta=int(0)
    Getv=int(0)
    Geth=int(0)

    Res=Geta+Getv+Geth

    e = Entry(master )
    e.pack(side = BOTTOM , padx = 5 , pady = 5)

    e.focus_set()

    def callback():
    Res=ea+ev+eh
    print (Res)

    b = Button(master, text="Resultat", width=12, command=callback )
    b.pack(side = BOTTOM , padx = 5 , pady = 5)



    #Angle

    ea=0
    ea = Entry(master )
    ea.pack(side = BOTTOM , padx = 5 , pady = 5)

    ea.focus_set()

    def callbacka():
    Geta=int(ea.get())
    print (Geta)

    ba=0
    ba = Button(master, text="Angle", width=12, command=callbacka )
    ba.pack(side = BOTTOM , padx = 5 , pady = 5)

    #Hauteur Initiale

    eh=0
    eh = Entry(master )
    eh.pack(side = BOTTOM , padx = 5 , pady = 5)

    eh.focus_set()

    def callbackh():
    Geth=int(eh.get())
    print (Geth)

    bh=0
    bh = Button(master, text="Hauteur Initiale", width=12, command=callbackh )
    bh.pack(side = BOTTOM , padx = 5 , pady = 5)

    #Vitesse Initiale

    ev=0
    ev = Entry(master )
    ev.pack(side = BOTTOM , padx = 5 , pady = 5)

    ev.focus_set()

    def callbackv():
    Getv=int(ev.get())
    print (Getv)

    bv=0
    bv = Button(master, text="Vitesse initiale", width=12, command=callbackv )
    bv.pack(side = BOTTOM , padx = 5 , pady = 5)


    master.mainloop()


    N'y connaissant pas grand chose je ne sais pas ou l'erreur car en cliquant sur Résultat j'ai :
    TypeError: unsupported operand type(s) for +: 'Entry' and 'Entry' .

    Je ne vois vraiment pas , c'est peut être tout con mais bon ... xp

    En tout cas merci à vous d'avoir lu jusque la et peut être d’avoir trouve ma solution .

    Cordialement Thibaut

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    Lorsque tu postes du code, utilise les balises du même nom. Le # dans les outils d'édition.

    Il est bien de copier le traceback d'erreur complet que l'on puisse voir où surgit celle-ci.

    Quelques remarques sur ton code.

    - Place d'abord toutes tes fonctions en début et ensuite la construction de ta fenêtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from tkinter import *
     
    def callback():
        ...
    def callbacka():
        ...
    def callbackh():
        ...
    def callbackv():
        ...
    master = Tk()
    ...
    Il semble que tu penses devoir créer tes références avant de leur attribuer une valeur utile.
    C'est peut-être vrai dans d'autres langages, quoique pas de la manière dont tu le fais, mais c'est tout-à-fait inutile en Python.

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ea=0    # INUTILE
    ea = Entry(master )
     
    ba=0    # INUTILE
    ba = Button(...
     
    etc..
    Simplifions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Geta=int(0)         # Geta = 0
    Getv=int(0)         # Getv = 0
    Geth=int(0)         # Geth = 0
    Res=Geta+Getv+Geth  # Res = 0  (3 * 0 == 0)
    Pouquoi crées-tu ces noms au début de ton code ? pour récupérer des valeurs qui seront établies ou calculée pendant l'exécution ?
    Dans ce cas, ce n'est pas aussi simple.
    Dans une fonction comme celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def callbacka():
        Geta=int(ea.get())
        print (Geta)
    tu crées une nouvelle référence Geta dans l'espace de nom de la fonction.
    Ensuite tu la printes et c'est tout.
    Si ton intention, ce que je suppose, est d'utiliser le nom Geta créé préalablement il faut soit le déclarer avec global soit retourner la valeur à celui qui l'a solicité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def callbacka():
        global Geta
        Geta=int(ea.get())
        print (Geta)
    En sucant mon pouce, j'ai deviné que l'erreur que tu obtenais devait se déclarer ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def callback():
        Res=ea+ev+eh
        print (Res)
    Que dit le message: "unsupported operand type(s) for +: 'Entry' and 'Entry'"
    En français: "Impossible d'additionner deux widgets Entry"
    On suppose que c'est le contenu de ces widgets qui t'intéresse or tu as justement créé trois fonctions qui sont censées faire cela; callbacka(), callbackh() et callbackv(), il suffit de les utiliser.

    Note que la lecture du contenu des Entry peut se faire en même temps dans la seule fonction callback().

    Voilà, yapluka ...

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai bien tout compris sauf : "On suppose que c'est le contenu de ces widgets qui t'intéresse or tu as justement créé trois fonctions qui sont censées faire cela; callbacka(), callbackh() et callbackv(), il suffit de les utiliser."

    Enfin je ne vois pas comment .

    Cordialement

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Ce que je voulais dire c'est que tes callbackx ne sont peut-être pas très utiles, celui appelé par le bouton peut faire le travail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def callback():
        res = int(ea.get()) + int(ev.get()) + int(eh.get())
        print (res)
    Il faudra prévoir ce qui se passe lorsqu'une valeur dans un Entry n'est pas convertible en entier. Ça, par contre, tu peux le faire dans tes autres fonctions callbackx en plaçant la conversion en entier dans un bloc try-except.

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci ca marche !

    Code :
    ## -*- coding: cp1252 -*-

    from tkinter import *
    from math import*

    master = Tk()
    master.config(bg = "orange")


    def callbacka():
    global Geta
    Geta=int(ea.get())
    print (Geta)

    def callbackh():
    global Geth
    Geth=int(eh.get())
    print (Geth)

    def callbackv():
    global Getv
    Getv=int(ev.get())
    print (Getv)

    def callback():
    res = int(ev.get())+ int(ea.get()) + int(eh.get())
    print (res)
    e.config(text = res)





    # Résultat


    e = Label(master )
    e.pack(side = BOTTOM , padx = 5 , pady = 5)

    e.focus_set()



    b = Button(master, text="Resultat", width=12, command=callback )
    b.pack(side = BOTTOM , padx = 5 , pady = 5)



    #Angle

    ea=0
    ea = Entry(master )
    ea.pack(side = BOTTOM , padx = 5 , pady = 5)

    ea.focus_set()




    la = Label(master, text="Angle", width=12 )
    la.pack(side = BOTTOM , padx = 5 , pady = 5)

    #Hauteur Initiale

    eh=0
    eh = Entry(master )
    eh.pack(side = BOTTOM , padx = 5 , pady = 5)

    eh.focus_set()




    lh = Label(master, text="Hauteur Initiale", width=12)
    lh.pack(side = BOTTOM , padx = 5 , pady = 5)

    #Vitesse Initiale


    ev = Entry(master )
    ev.pack(side = BOTTOM , padx = 5 , pady = 5)

    ev.focus_set()




    lv = Label(master, text="Vitesse initiale", width=12 )
    lv.pack(side = BOTTOM , padx = 5 , pady = 5)


    master.mainloop()

Discussions similaires

  1. Quel choix pour mon projet ? (Python or not Python)
    Par samue101 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/06/2013, 23h56
  2. Convertir mon projet Python/Django en PHP
    Par fishermansfriend dans le forum Langage
    Réponses: 2
    Dernier message: 29/08/2012, 11h30
  3. [Système d'aide] Lier mon *.hlp à mon projet
    Par termerair dans le forum MFC
    Réponses: 2
    Dernier message: 18/01/2005, 14h39
  4. Choix d'un SGBDR pour mon projet: Interbase?
    Par super16 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 09/07/2004, 09h15
  5. Réponses: 5
    Dernier message: 05/06/2004, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo