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

Tkinter Python Discussion :

balle rebondissante


Sujet :

Tkinter Python

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut balle rebondissante
    Salut a tous , j'ai un exo qui me donne du fil a retordre . " Ecrivez un programme qui fait apparaitre une fenetre avec un canevas. Dans ce ce canevas placer une balle . Sous le canevas placer un boutton. chaque fois que l'on clique sur ce bouton la balle doit avancer d'une petite distance vers la droite jusqu’à ce qu'elle atteigne l’extrémité du canvas . si on continue la balle doit alors revenir en arriere j'usqu'à l'autre extremité et ainsi de suite ."

    alors voila ce que j'ai ecris pour l'instant :

    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
    from tkinter import *
     
    def avance (gd):          #fonction pour faire avancer la balle 
        global x1,x2
        x1,x2 = x1+gd, x2 + gd
        can.coords(oval, x1, y1, x2, y1+30)
     
    def droite( ):              #fonction pour aller a droite 
        avance(30)
     
    def gauche( ):           #fonction pour aller a gauche
        avance(-30)
     
    def pousse( ):
        global x1,x2
        droite
        if  x2 <= 300 and x2 >= 30:
                gauche
        if  x1 >= 0 and  x1 <= 270:
                droite
     
     
    #variables a traiter globalement                               
    x1,y1,x2 ,y2= 0,150,30,180
     
     
    fen = Tk( )
    fen.title("La BouBoule")
     
    #programme principale
    can = Canvas(fen, bg="dark grey", width=300, height=300)
    can.grid(row=0,rowspan=3,column=1,columnspan=3)
    oval = can.create_oval(x1,y1,x2,y2,fill="yellow",outline="black")
    Button(fen,text="Quitter",command=fen.quit).grid(row=4 ,column=3,sticky=E)
    Button(fen,text="poupousse",command=pousse).grid(row=4,column=1,sticky=W)
     
    fen.mainloop( )
    fen.destroy( )

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Il faut commencer par arriver à déplacer la balle.
    Et pour çà revoir un peu comment appeler une fonction.
    Comme vous débutez, il faut apprendre à travailler avec l'interpréteur Python, genre:
    on définit une fonction qui affiche 'toto':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> def f():
    ...     print ('toto')
    ...
    puis vous essayez de la lancer.
    Vous regardez ce qu'il se passe.
    Et vous essayez de comprendre pourquoi çà ne se passe pas dans votre code.

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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut l'exo d'avant
    l'exo d'avant me disait de la faire bouger avec deux boutons gauche et droite que j'ai reussis , je reconnais comment fonctionne une fonction . la je pense que la fonction gauche et droite son inutile mais pourrais tu répondre a ma question et ne pas mentionner mes lacune ou bien me guider pour qui je puisse réfléchir de moi même et résoudre le problème
    merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par IIllII Voir le message
    l'exo d'avant me disait de la faire bouger avec deux boutons gauche et droite que j'ai reussis , je reconnais comment fonctionne une fonction . la je pense que la fonction gauche et droite son inutile mais pourrais tu répondre a ma question et ne pas mentionner mes lacune ou bien me guider pour qui je puisse réfléchir de moi même et résoudre le problème
    Le code que vous avez posté ne peut pas fonctionner.
    Un premier pas serait de comprendre pourquoi.
    Vous avez donc matière à réfléchir et quand je vous suggère de revoir comment on appelle une fonction, c'est quand même une indication pour vous permettre d'avancer (et faire avancer la balle avant qu'elle ait à rebondir est quand même un premier pas, non?).

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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Le code que vous avez posté ne peut pas fonctionner.
    Un premier pas serait de comprendre pourquoi.
    Vous avez donc matière à réfléchir et quand je vous suggère de revoir comment on appelle une fonction, c'est quand même une indication pour vous permettre d'avancer (et faire avancer la balle avant qu'elle ait à rebondir est quand même un premier pas, non?).

    - W
    voila la elle avance est recule avec deux boutons mais mon probleme reste le meme :/ je ne parviens pas a trouver une logique pour tout calé sur le meme boutons :/
    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
    from tkinter import *
     
    def avance (gd):          #fonction pour faire avancer la balle 
        global x1,x2
        x1,x2 = x1+gd, x2 + gd
        can.coords(oval, x1, y1, x2, y1+30)
     
    def retour ( ):
        avance(-10)
     
    def pousse( ):
        avance(10)
     
     
     
    #variables a traiter globalement                               
    x1,y1,x2 ,y2= 0,150,30,180
    i = 10
     
     
    fen = Tk( )
    fen.title("La BouBoule")
     
    #programme principale
    can = Canvas(fen, bg="dark grey", width=300, height=300)
    can.grid(row=0,rowspan=3,column=1,columnspan=3)
    oval = can.create_oval(x1,y1,x2,y2,fill="yellow",outline="black")
    Button(fen,text="Quitter",command=fen.quit).grid(row=4 ,column=3,sticky=E)
    Button(fen,text="avancer",command=pousse).grid(row=4,column=1,sticky=W)
    Button(fen,text="reculer",command=retour).grid(row=5,column=1,sticky=W)
     
     
    fen.mainloop( )
    fen.destroy( )

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par IIllII Voir le message
    voila la elle avance est recule avec deux boutons mais mon probleme reste le meme :/ je ne parviens pas a trouver une logique pour tout calé sur le meme boutons :/
    "avance" déplace votre cercle en ajoutant gd aux variables globales x1, x2.
    Si dx est le déplacement, votre fonction devra détecter la collision avec les bords, i.e. tester que 0 <= x1 + dx et x2 + dx <= 300 et changer de signe le déplacement à effectuer (dx = - dx) dans ce cas là.

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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    "avance" déplace votre cercle en ajoutant gd aux variables globales x1, x2.
    Si dx est le déplacement, votre fonction devra détecter la collision avec les bords, i.e. tester que 0 <= x1 + dx et x2 + dx <= 300 et changer de signe le déplacement à effectuer (dx = - dx) dans ce cas là.

    - W
    en gros il faudrait que je re definisse une variable dx qui représenterais le déplacement de mon cercle

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par IIllII Voir le message
    en gros il faudrait que je re definisse une variable dx qui représenterais le déplacement de mon cercle
    Si le déplacement (+30) doit devenir (-30) lorsqu'on touche le bord droit, ce déplacement est bien variable. De plus, pour survivre aux différents appels déclenchés par le Button, il doit être global.
    note: les termes techniques du langage ne sont pas toujours de faux amis.

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

Discussions similaires

  1. Jeu de balle rebondissante
    Par hi-1995 dans le forum C
    Réponses: 22
    Dernier message: 21/10/2014, 20h53
  2. Balle Rebondissante Soucis Form1 Taille
    Par KaZz- dans le forum Débuter
    Réponses: 6
    Dernier message: 28/10/2011, 10h20
  3. Impact de balles, trace de pas... Comment faire???
    Par supergrey dans le forum DirectX
    Réponses: 1
    Dernier message: 15/07/2004, 13h46

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