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 :

Probleme Tkinter jeu


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Par défaut Probleme Tkinter jeu
    Bonjour,
    j'essaie de faire un petit jeu sur python avec le module Tkinter, le principe est simple, il y a une image avec une patate qui apparait et qui se déplace de façon aléatoire dans la fenêtre à une vitesse assez importante.
    Le but est de cliquer sur la patate le plus vite possible et lorsqu'on clique dessus, notre temps s'affiche et la patate arrête de bouger.
    Je pensais que ce serait simple mais .. pas tant que ça. Je n'arrive pas à faire bouger la patate de façon aléatoire, et je ne sais pas comment arrêter le jeu en cliquant dessus. J'upload aussi l'image de patate que j'utilise, si jamais vous voulez essayer.Nom : patate.gif
Affichages : 209
Taille : 5,6 Ko


    Merci de votre aide !

    Voici mon petit programme :

    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
    from tkinter import*
    import random
     
    def clickcan(event):
        ???
     
    root = Tk ()
    root.configure (bg='#ffffff')
    root.geometry ("1366x768+10+10")
    root.wm_state(newstate="zoomed")
    root.title ("Cliques sur la patate")
     
    bouton = Button(root, text='Quitter le jeu', command = root.destroy)
    bouton.configure (bg = 'grey')
    bouton.place(x=1250,y=5)
     
     
    titre = Label(root, text="Attrapes la patate !")
    titre.place (x=375, y=5)
    titre.configure (bg='#ffffff')
    titre.config (font=('Comic sans ms',50,'bold'))
    titre.config (fg='red')
     
    can=Canvas(root,width=160,height=160,bg='white')
    photo=PhotoImage(file='patate.gif')
    item = can.create_image(80,80,image=photo)
    can.pack()
     
    x=500
    y=300
    randomx = random.randint(1,6)
    randomy = random.randint(1,6)
     
    while (can!=True):
     
        if (x>0 and x<1000):
                x=x+randomx
        else :
            x= x-randomx
        if (y>0 and y<600) :
                 y=randomy+3
        else :
            y= randomy-7
     
        can.place(x=x,y=y)
        root.update()
    root.mainloop ()

  2. #2
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Par défaut
    J'ai réussi à corriger quelques-unes de mes erreurs, j'arrive à faire se balader l'image de façon aléatoire mais (parcequ'il y en a un) lorsque je clique sur le bouton pour lancer le chrono, je voudrais qu'il se ferme automatiquement (comment faire ?) et comment créer l'évenement <<Clic sur la patate>> ?

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    #Importation des différentes bibliothèques Python
    from tkinter import*
    import random
    from random import randrange
    import time
     
     
    def lancer_chrono():
        boutongo.destroy
        global depart,flag
        flag=1
        depart = time.time()
        top_horloge()
     
    def top_horloge():
        global depart,flag
        y=time.time()-depart    
        secondes = time.localtime(y)[5]
        if flag :
            message.configure(text = "%i sec " %(secondes))
        root.after(1000,top_horloge)
     
    #Création de la fenêtre de jeu   
    root = Tk ()
    root.configure (bg='#ffffff')
    root.geometry ("1366x768+10+10")
    root.wm_state(newstate="zoomed")
    root.title ("Cliques sur la patate")
     
     
     
    #Création du bouton pour quitter le jeu
    bouton = Button(root, text='Quitter le jeu', command = root.destroy)
    bouton.configure (bg = 'grey')
    bouton.place(x=1250,y=5)
     
    #Button(root,text='GO !',command=lancer_chrono).grid(row=2)
    #Création du titre du jeu
    titre = Label(root, text="Attrapes la patate !")
    titre.place (x=375, y=5)
    titre.configure (bg='#ffffff')
    titre.config (font=('Comic sans ms',50,'bold'))
    titre.config (fg='red')
     
    #Création de la patate !
    can=Canvas(root,width=160,height=160,bg='white')
    photo=PhotoImage(file='patate.gif')
    item = can.create_image(80,80,image=photo)
    can.pack()
     
    boutongo= Button(root,text='JOUER',command=lancer_chrono)
    boutongo.configure(font=('Comic sans MS',20))
    boutongo.config(fg='blue')
    boutongo.config(bg='red')
    boutongo.place(x=630,y=350)
    #boutongo=Button(root,boutongo.destroy,boutongo=None)
    #VARIABLES
    x=500
    y=300
    randomx = random.randint(1,10)
    randomy = random.randint(1,10)
    plusx=True
    plusy=True
     
     
    #Boucle de déplacement de la patate
    message = Label(root,font=('sans', 20, 'bold'),text="Chrono prêt")
    message.grid(row=1)
    while(1):
        randomx = random.randint(1,10)
        randomy = random.randint(1,10)
        x=x+randomx if plusx else x-randomx
        y=y+randomy if plusy else y-randomy
        plusx=plusx if x>0 and x<1200 else not plusx
        plusy=plusy if y>0 and y<550 else not plusy
        can.place(x=x,y=y)
        root.update()
    root.mainloop ()

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 150
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Il ne faut pas bloquer la boucle de l'interface utilisateur, avec une autre boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while(1):
        randomx = random.randint(1,10)
        randomy = random.randint(1,10)
        x=x+randomx if plusx else x-randomx
        y=y+randomy if plusy else y-randomy
        plusx=plusx if x>0 and x<1200 else not plusx
        plusy=plusy if y>0 and y<550 else not plusy
        can.place(x=x,y=y)
        root.update()
    root.mainloop ()
    Sinon, votre interface/fenêtre gélera.

    Puis, c'est quoi cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plusy=plusy if y>0 and y<550 else not plusy
    ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Puis, c'est quoi cette syntaxe ?
    Justement, j'ai demandé à un ami de m'aider un peu, il m'a fait ça, et lorsque j'essai de réajuster en réécrivant mieux, je n'arrive pas à positionner les "not" ..


    Sinon, je n'ai pas compris l'histoire de la boucle interface utilisateur (désolé, je débute en python).

    Bonne soirée

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par La Dime 11 Voir le message
    Justement, j'ai demandé à un ami de m'aider un peu, il m'a fait ça, et lorsque j'essai de réajuster en réécrivant mieux, je n'arrive pas à positionner les "not" ..

    Sinon, je n'ai pas compris l'histoire de la boucle interface utilisateur (désolé, je débute en python).
    SI vous voulez apprendre à programmer, recopier des instructions que vous ne comprenez pas n'est pas une bonne idée.
    Vous vous retrouvez à avoir des lignes de codes qui font peut être le "job" mais qui sont "magiques".
    Un peu comme nos ancêtres adoraient les dieux de la pluie, du vent,...
    Difficile d'avoir un esprit critique par rapport à ce qui se passe et... impossible de comprendre, s'approprier,... faire des trucs intéressant sans faire des offrandes aux sorciers et aux dieux qui hantent les forums.

    Pourquoi ne pas prendre le temps de lire un tuto?

    Le chapitre 10 du Swinnen vous explique ce que vous devez savoir d'un GUI graphique comme Tkinter. C'est important de savoir comment çà fonctionne avant d'essayer de jouer avec.
    Vous trouverez aussi pas mal d'exemples de programmes dont vous pourrez vous inspirer pour faire le votre avec en plus des explications sur le "comment" ils fonctionnent.

    à vous de voir

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. probleme de jeu question reponse '2'
    Par soufiane669 dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2009, 13h04
  2. probleme avec jeu démineur
    Par wokba dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/01/2008, 18h18
  3. probleme de jeu de cadre et de lien
    Par personne64 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/10/2006, 21h59

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