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 :

Utilisation for i in range (n) pour projet roulette de casino


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut Utilisation for i in range (n) pour projet roulette de casino
    Bonjour ,

    Donc voila j'ai un projet pour le lycée qui de faire une roulette de casino , pour la partie graphique tout ce passe très bien mais ce qui me pose problème c'est l'arrêt de la bille , une foi arriver au centre de la roulette elle repart dans l'autre sens ... On m'a conseillé d'utiliser la commande " for in range (n)" pour que ma bille s’arrête au bout de x secondes , cependant je ne sais pas ou placer cette commande et si quelqu'un pouvait me venir en aide cela m'aiderait énormément ,donc voici mon 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
    #  Créé par x, le 25/05/2014
    from __future__ import division
    from lycee import *
    from time import *
    from Tkinter import *
     
     
    #Programme traçant une trajectoire double sinusoidale
     
    #---- Initialisation des variables
    Xo,Yo,Rbille,Rroulette = 200,200,5,80
    t0=time()
     
    #---- Affichage de la position au temps t
    def play ():
        global Xo, Yo, R
     
        t=time()
     
        X=Xo-(90-((5)*(t-t0)))*sin(150*(t-t0))
        Y=Yo-(90-((5)*(t-t0)))*cos(-150*(t-t0))
     
     
     
     
        can1.coords(Bille,X-Rbille,Y-Rbille,X+Rbille,Y+Rbille)
     
        fen1.after(1,play)
     
    #-Programme principal
    #--- Ouverture de la fenêtre principale
    fen1 = Tk()
     
    #---- Définition d'un canevas appelé can1
    can1 = Canvas(fen1,bg='dark green',height=400,width=400)
    can1.pack(side=RIGHT)
     
    bou2 = Button(fen1, text='lancer', command = play)
    bou2.pack()
    Roulette = can1.create_oval(120,120,280,280,width=10 ,fill="RosyBrown4")
     
    Bille = can1.create_oval(195,195,205,205,width=0,fill='white')
     
    fen1.mainloop()



    Je vous remercie par avance de votre aide,
    cordialement yoy27500

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

    L'intérêt de poster du code est d'éviter aux personnes qui chercheront à vous aider de perdre du temps.
    Le but est de pouvoir faire fonctionner votre code après un simple copie&coller.

    Quand on lit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def play ():
    (alinéa) global Xo, Yo, R
    ...
    on arrête de lire et, en général, on passe à autre chose sans même perdre le temps vous laisser de petit mot comme celui-ci.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut
    Je suis désolé , mais étant nouveau sur le forum je n'ai pas pris connaissance (Oui je sais c'est mal !) de la commande [CODE] , j'ai donc éditer mon message .

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yoyo27500 Voir le message
    Je suis désolé , mais étant nouveau sur le forum je n'ai pas pris connaissance (Oui je sais c'est mal !) de la commande [CODE] , j'ai donc éditer mon message .
    SVP, évitez de modifier vos messages : ça fausse le fil de la discussion.

    Préférez publier un nouveau message à chaque fois dans le même fil de discussion.

    Les serveurs du forum ont de la place et de la mémoire, ne vous inquiétez pas.

    @+.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    C'est bien.

    Jouez avec ce code là:
    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
    # -*- coding:utf-8 -*-
    from time import *
    from Tkinter import *
    from math import sin, cos 
     
    #Programme traçant une trajectoire double sinusoidale
     
    #---- Initialisation des variables
     
    Xo,Yo,Rbille,Rroulette = 200,200,5,80
    t0=time()
     
    #---- Affichage de la position au temps t
    timer = None
    def play ():
        global timer
        if timer:
            return
     
        t=time()
        X=Xo-(90-((5)*(t-t0)))*sin(150*(t-t0))
        Y=Yo-(90-((5)*(t-t0)))*cos(-150*(t-t0))
        can1.coords('bille',X-Rbille,Y-Rbille,X+Rbille,Y+Rbille)
     
        timer = fen1.after(100,play)
     
    def stop():
        global timer
        if timer:
            fen1.after_cancel(timer)
            timer = None
     
    #-Programme principal
    #--- Ouverture de la fenêtre principale
    fen1 = Tk()
     
    #---- Définition d'un canevas appelé can1
    can1 = Canvas(fen1,bg='dark green',height=400,width=400)
    can1.pack(side=RIGHT)
     
    Button(fen1, text='lancer', command=play).pack()
    Button(fen1, text='stop', command=stop).pack()
     
     
    can1.create_oval(120,120,280,280,width=10 ,fill="RosyBrown4") 
    can1.create_oval(195,195,205,205,width=0,fill='white', tag='bille')
     
    fen1.mainloop()
    Il vous montre que la bille s'arrête lorsqu'on arrête d'appeler fen1.after(100,play).
    Ici la condition est déclenché par le Button "stop".

    Vous pourriez créer un nombre aléatoirement et pas trop grand:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    count = nombre aléatoire
    def play():
          global count
          count -= 1
          if count <= 0:
               return
          ... ici on fait bouger la bille...
    Ou une durée aléatoire.

    A vous de voir.
    La bibliothèque random est ici

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

  6. #6
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut
    Merci beaucoup ! Mais du coup si je veux faire tourner ma bille pendant x secondes il faut que j'utilise count c'est ça ? je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    timer = None
    def play ():
        global timer
        if timer:
            return
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    count (10)
    def play():
          global count
          count -= 1
          if count <= 0:
               return

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par yoyo27500 Voir le message
    Mais du coup si je veux faire tourner ma bille pendant x secondes, il faut que j'utilise count c'est ça ?
    A partir du moment ou çà fait "fen1.after(delay,play)", la durée serait ~count*delai.
    Mais comme vous êtes parti à mesurer le temps sorti de time(), vous pourriez calculer un max_time = t0 + random(qqc) et ré-iterer les .after tant que time < max_time.
    A vous de choisir en fonction de comment vous le sentez.

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser le même look and feel pour plusieurs projets
    Par benbauf dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 03/09/2010, 16h59
  2. Utiliser l'adresse de deux cellules pour selectionner une rangé
    Par Gaelb dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/08/2008, 15h26
  3. Comment utiliser Range(cells(... pour indiquer une plage de cellules
    Par gerald57 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/05/2008, 10h35
  4. Nom de Champ pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 19h57
  5. Nom de Champ dans une table pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 6
    Dernier message: 30/10/2004, 13h28

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