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 :

Boucle pour Bulles qui montent


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut Boucle pour Bulles qui montent
    Bonjour,
    voici un code sur lequel je n'arrive pas à faire une boucle qui fasse monter la bulle en continue; à fortiori plusieurs bulles.
    Dois je faire while true?
    Pouvez-vous m'aider ? Merci d'avance


    Code Python : 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
    from tkinter import *
    from random import randint
     
    # fonction d'animation
    def anim():
     
        global x, y, couleur, taille, vitesse
     
        # effacement du canevas
        can.delete('all')
     
        # déplacement de la bulle avec test si la balle atteint le haut
        # dans ce cas, on réinitialise au hasard les caractéristiques de la bulle
     
        # affichage de la bulle
        bulle = can.create_oval(x - taille//2, y - taille//2, x + taille//2, y + taille//2,fill = couleurs[couleur])
        fen.after(20,anim) # appel toutes les 20 millisecondes
     
     
    # création de la fenêtre et du canevas de dessin
    fen = Tk()
    fen.title('Champagne !')
    can = Canvas(fen, width = 300, height = 200, background='black')
    can.pack()
     
    # initialisation des caractéristiques de la bulle
    couleurs = ['white', 'red', 'green', 'blue', 'cyan', 'yellow', 'magenta'] # liste des couleurs possibles
     
    x = randint(10,290)
    y = 190
    couleur = randint(0,6) # indice de la couleur dans la liste 'couleurs'
    taille = randint(2,10)
    vitesse = randint(1,10)
     
     
    anim() # lancement de l'animation
     
     
     
    fen.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 717
    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 717
    Par défaut
    Salut,

    Pour que les bulles "bougent", il faudrait changer l'endroit (x, y) où vous les créez...
    Mieux, la déplacer avec .move plutôt que de tout effacer et recommencer à chaque fois.
    Prenez aussi le temps d'ouvrir un tuto. et de regarder comment sont codés les exemples après avoir lu les explications données.

    - 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
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Pour que les bulles "bougent", il faudrait changer l'endroit (x, y) où vous les créez...
    Mieux, la déplacer avec .move plutôt que de tout effacer et recommencer à chaque fois.
    Prenez aussi le temps d'ouvrir un tuto. et de regarder comment sont codés les exemples après avoir lu les explications données.

    - W
    Merci pour les indices.
    J'ai modifié mais je reste bloqué pour le déplacement...

    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
    from tkinter import *
    from random import randint
     
    def bulle(x,y,r,v,coul):
     can.create_oval(x-r,y-r,x+r,y+r,fill=couleurs[coul])
     
    #une liste paramUneBulle pour ranger chaques parametres(aleatoires) d'une bulle et rangés dans une liste paramToutesBulles
     
    def afficheBulles():
     
     paramToutesBulles=[[randint(10,190),190,randint(4,10),randint(1,10),randint(0,6)],[randint(10,190),190,randint(4,10),randint(1,10),randint(0,6)],[randint(10,190),190,randint(4,10),randint(1,10),randint(0,6)],[randint(10,190),190,randint(4,10),randint(1,10),randint(0,6)]]
     Bulle=[0,0,0,0]
     i=0
     while i<len(paramToutesBulles):
      paramUneBulle=paramToutesBulles[i]
      Bulle[i]=bulle(paramUneBulle[0],paramUneBulle[1],paramUneBulle[2],paramUneBulle[3],paramUneBulle[4])
      i=i+1
     
     
     
    # création de la fenêtre et du canevas de dessin
    fen = Tk()
    fen.title('Champagne !')
    can = Canvas(fen, width = 300, height = 200, background='black')
    can.pack()
     
    couleurs = ['white', 'red', 'green', 'blue', 'cyan', 'yellow', 'magenta'] # liste des couleurs possibles
     
    afficheBulles()
    fen.mainloop()

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 717
    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 717
    Par défaut
    Salut,

    Si vous voulez que vos bulles bougent, impossible de se passer d'after qui va appeler toutes les n secondes une fonction qui va les déplacer.

    Cette mécanique là était dans la première mouture de votre code...
    Elle n'est plus dans la seconde, mais c'est pas une option.

    Après, pour déplacer, il faut connaître la position courante et lui ajouter quelque chose (si vous recréez la bulle à chaque itération) ou utiliser .move pour dire de combien vous voulez déplacer votre bulle.

    Dans la dernière mouture de votre code, çà se contente de créer les bulles une seule fois et puis ciaoo.

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

Discussions similaires

  1. [WD-2007] Boucle pour supprimer des paragraphes qui finissent par "toto"
    Par mouftie dans le forum VBA Word
    Réponses: 11
    Dernier message: 29/10/2015, 12h14
  2. IIS + Apache + mysql...pour ceux qui ont déjà installé
    Par ludophil dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 15/10/2005, 02h21
  3. boucle pour insérer des enregistrements
    Par roots_man dans le forum ASP
    Réponses: 7
    Dernier message: 05/10/2004, 09h28
  4. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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