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

Python Discussion :

Besoin d'aide pour un jeux de fléchettes


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Besoin d'aide pour un jeux de fléchettes
    Bonjour , je suis actuellement en Ts spé ISN est par conséquent je suis débutant en python .
    Je vous explique mon programme , le but est de créer un jeu de fléchettes dans lequel lorsque l'on clique la cible apparait à un nouvel endroit qui est définie aléatoirement .
    Le système de comptage des points fonctionne en calculant la distance du clique avec le centre de la cible .
    J'avoue ne pas savoir d'ou provient le problème et par conséquent l'aide de quelqu'un de plus qualifier serait la bienvenue .
    Je joins ci-dessous mon programme
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 059
    Points : 1 396
    Points
    1 396
    Par défaut
    quel problème ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je n'arrive pas à se faire déplacer l'image

  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
    Salut,

    Ton code est suffisamment court pour être placé ici.

    Ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    #Flechettes#
    import time
    import random
    from math import *
    from Tkinter import *
     
    p=0 # nombres de points au départ
     
    def clic():#fonction qui calcul les points et qui déplace l'image#
        if X-100+Y-100<20 :
            p=p+50
        elif 20<X-100+Y-100 and X-100+Y-100<50:
            p=p+20
        elif 50<X-100+Y-100 and X-100+Y-100<100:
            p=p+10
     
        X=random.randint(150,250)
        Y=random.randint(150,250)
        found.coords(img,X,Y)
     
    def chrono():
        tZero=time.time() #Récupération de tZero
        t=time.time() -tZero # Temps après tZero
        while t<15 : # temps total du chrono
     
          t=time.time() -tZero
            # Crée un temps en seconde 4.84287779592 (0=01/01/1970)
     
          tiTuple=time.gmtime(t)
            # Conversion en tuple (1970, 1, 1, 0, 0, 4, 3, 1, 0) 
     
          reste=t-tiTuple[3]*3600.0-tiTuple[4]*60.0-tiTuple[5]*1.0
            # Recupération du reste    
     
          resteS=("%.2f" % reste )[-2::]
            #Affiche les dixièmes et centièmes de l'arrondi ex: 84
     
          tt=time.strftime("%H:%M:%S", tiTuple)+","+resteS
     
          time.sleep(0.01) #Attente en second
          if t>15:
              ecoule=Label(text='time up')
     
     
    #esthetique#
    start=Button(text="Lancer le temps",command=chrono)
    start.pack()
    found=Canvas(width=800,height=800,bg="white")
    found.pack()
    found.bind('<Button-1>',clic)
    ficherimg=PhotoImage(file="thumb.gif")
    img=found.create_image(200,200,image=ficherimg)
    chrono1=Label(fen1,text="TEMPS")
    chrono1.place(x=150,y=0)
    p=Label(text=str(p)+"POINTS")
    p.place(x=20,y=0)
     
     
    fen1.mainloop()
    La cible sera correctement déplacée si tu corriges les erreurs qui ont dût inévitablement apparaître quand tu l'as testé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Traceback (most recent call last):
      File "Projet1.py", line 54, in <module>
        chrono1=Label(fen1,text="TEMPS")
    NameError: name 'fen1' is not defined
    Il faut créer ta fenêtre principale avant tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
        return self.func(*args)
    TypeError: clic() takes no arguments (1 given)
    À la lecture de ton code, on se demande d'où sortent ces X et Y de la fonction clic() ?
    La réponse est dans l'erreur et la solution est là:
    http://effbot.org/tkinterbook/tkinte...d-bindings.htm

    Ensuite ton calcul vérifie si les coordonnées du clic se trouvent dans les rangs (-infini, 19), (21, 49) et (51, 99) mais par rapport à quoi ? pas à la cible en tous cas puisque tu ne gardes aucune référence de sa position.

    Et, pour finir, ton chrono est beaucoup trop compliqué d'une part et est bloquant d'autre part. Bloquant veut dire que ton code est à l'arrêt pendant les quinze secondes du timer, il faudra le mettre dans un thread.
    Python possède un module fait pour ça:
    https://docs.python.org/2/library/th...#timer-objects

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai réparé le problème de fenetre et supprimer mon chrono pour y placer celui que vous m'avez conseillé mais il me met Time is not define .
    De plus lorsque je clique il me met erreur: clic() takes no arguments (1 given)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #Flechettes#
    import time
    import random
    from math import *
    from Tkinter import *
    fen1=Tk()
     
    p=0 # nombres de points au départ
     
    def clic():#fonction qui calcul les points et qui déplace l'image#
     
        if X-evtx+Y-evty<20 :
            p=p+50
        elif 20<X-evtx+Y-evty and X-evtx+Y-evty<50:
            p=p+20
        elif 50<X-evtx+Y-exty and X-evtx+Y-evty<100:
            p=p+10
     
        X=random.randint(150,250)
        Y=random.randint(150,250)
        found.coords(img,X,Y)
    def chrono():
        temps=Label(fen1,text="temps écoulé")
    t=Timer(15.0,chrono)
    t.start()
     
     
    #esthetique#         
    found=Canvas(fen1 ,width=800,height=800,bg="white")
    found.pack()#Flechettes#
    import time
    import random
    from math import *
    from Tkinter import *
    fen1=Tk()
    found.bind('<Button-1>',clic)
    ficherimg=PhotoImage(file="mjAA.gif")
    img=found.create_image(200,200,image=ficherimg)
    p=Label(fen1 ,text=str(p)+"POINTS")
    p.place(x=300,y=0)
     
    fen1.mainloop()

  6. #6
    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
    - 1 C'est pourtant dans l'exemple de la doc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from threading import Timer
    - 2 Je t'ai mis le lien où tu aurais pu voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def callback(event):
        print "clicked at", event.x, event.y

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    L'image ce deplace mais les points restent a 50 pourriez vous m'aider ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #Flechettes#
    import time
    import random
    from math import *
    from Tkinter import *
    from threading import Timer
    fen1=Tk()
     
     # nombres de points au départ
     
    def clic(event):#fonction qui calcul les points et qui déplace l'image#
        p=0
        X=100
        Y=100
        if X-event.x+Y-event.y<200 :
            p=p+50
     
        X=random.randint(150,700)
        Y=random.randint(150,700)
        found.coords(img,X,Y)
        p=Label(fen1 ,text=str(p)+"POINTS")
        p.place(x=300,y=0)
     
    def chrono():
        temps=Label(fen1,text="temps écoulé")
        yemps.place(x=500, y=0)
    t=Timer(15.0,chrono)
    t.start()
     
     
    #esthetique#         
    found=Canvas(fen1 ,width=800,height=800,bg="white")
    found.pack()
    found.bind('<Button-1>',clic)
    ficherimg=PhotoImage(file="mjAA.gif")
    img=found.create_image(200,200,image=ficherimg)
     
     
     
    fen1.mainloop()

  8. #8
    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
    Tu fais ceci et ça devrait te sauter aux yeux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def clic(event):#fonction qui calcul les points et qui déplace l'image#
        print "100 - %s + 100 - %s = %s" %(event.x, event.y, 200-event.x-event.y)
    Si ton intention est de calculer la distance entre le click et le centre de la cible, il faudra que tu gardes référence de la position de la cible puisqu'elle est déplacée aléatoirement à chaque clic.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je pense que ma formule pour calculer la distance est bonne et pourtant il se peut que si je clique loin d=200 alors que si je clique pres de la cible d=400 est ce que quelqu'un pourrait m'eclairer ?
    #Flechettes#
    import time
    import random
    from math import *
    from Tkinter import *
    from threading import Timer

    fen1=Tk()

    p=0 # nombres de points au départ



    def clic(event):#fonction qui calcul les points et qui déplace l'image
    global p
    #print "100 - %s + 100 - %s = %s" %(event.x, event.y, 200-event.x-event.y)
    X=random.randint(150,700)
    Y=random.randint(150,700)
    print X,Y,event.x,event.y

    #d=pow((event.x-X)**2+(event.y-Y)**2,0.5)
    #d= sqrt( (event.x - X)**2 + (event.y - Y)**2 )
    #d=X+Y-event.x-event.y
    xd=X-event.x
    yd=Y-event.y
    d=sqrt(xd*xd + yd*yd)
    print d

    if d<500:
    p=p+50
    found.coords(img,X,Y)
    po=Label(fen1 ,text=str(p)+"points")
    po.place(x=300,y=0)


    def chrono():
    detruire=Button(fen1,text="Quitter",command=quitter)
    detruire.place(x=100,y=0)
    rejouer=Button(fen1,text="Rejouer",command=new)
    rejouer.place(x=200, y=0)
    t=Timer(5.0,chrono)
    t.start()

    def quitter():
    fen1.destroy()

    def new():
    p=0
    t=Timer(15.0,chrono)
    t.start





    #esthetique#
    found=Canvas(fen1 ,width=800,height=800,bg="white")
    found.pack()
    found.bind('<Button-1>',clic)
    ficherimg=PhotoImage(file="mjAA.gif")
    img=found.create_image(200,200,image=ficherimg)




    fen1.mainloop()

  10. #10
    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
    Citation Envoyé par totissimo Voir le message
    Je pense que ma formule pour calculer la distance est bonne et pourtant il se peut que si je clique loin d=200 alors que si je clique pres de la cible
    Peu importe que tu cliques près de la cible, le calcul est fait sur les futures coordonnées de la cible.

Discussions similaires

  1. [mini-jeux guitare] Besoin d'aide pour stocker des sons
    Par betsprite dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/10/2010, 18h00
  2. Réponses: 42
    Dernier message: 11/03/2007, 14h09
  3. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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