Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de boucle

sans aucune boucle

Sujet résolu
    13 novembre 2010 à 10:56:02

    Bonjour à tous, aujourd'hui mon problème, eh ben, je ne le comprend pas. Voici ma class Menu, lorsque je lance ce code, il se met à faire une boucle : je le sais car je lui demande de m'afficher la vidéo qu'il devrait être en train de jouer. Le problème c'est qu'il me les affiche toutes comme si, avant même que l'utilisateur est appuyé sur quelque chose, le programme appuie sur tout les boutons.

    def __init__(self,start):
    
            self.border = OnscreenImage(image = 'menu/border.png', pos = (-1.1, 0, 0), scale = (0.4,1,1))
            
            if start=="1":
                self.video("menu/video/001-020.avi")
    
            self.choix1 = DirectButton(text = ("Ice Town"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.07,1,.07),
                            #command = self.ville("1"),
                            pos = (-1.05,0,0.5),
                            state = DGG.NORMAL)
    
            OnscreenText(text="Ice Town", style=1, fg=(1,1,1,1),pos=(-1.05,0.5), scale = .07)
    
            self.choix2 = DirectButton(text = ("Modern City"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.07,1,.07),
                            command = self.ville("2"),
                            pos = (-1.05,0,0.4),
                            state = DGG.NORMAL)
    
            OnscreenText(text="Modern City", style=1, fg=(1,1,1,1),pos=(-1.05,0.4), scale = .07)
    
            self.choix3 = DirectButton(text = ("Sun Beach"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.07,1,.07),
                            command = self.ville("3"),
                            pos = (-1.05,0,0.3),
                            state = DGG.NORMAL)
    
            OnscreenText(text="Sun Beach", style=1, fg=(1,1,1,1),pos=(-1.05,0.3), scale = .07)
    
            self.choix4 = DirectButton(text = ("Underground"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.07,1,.07),
                            command = self.ville("4"),
                            pos = (-1.05,0,0.2),
                            state = DGG.NORMAL)
    
            OnscreenText(text="Underground", style=1, fg=(1,1,1,1),pos=(-1.05,0.2), scale = .07)
    
            self.choix5 = DirectButton(text = ("High Mountains"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.07,1,.07),
                            command = self.ville("5"),
                            pos = (-1.05,0,0.1),
                            state = DGG.NORMAL)
    
            OnscreenText(text="High Mountains", style=1, fg=(1,1,1,1),pos=(-1.05,0.1), scale = .07)
    
            self.choix6 = DirectButton(text = ("Ice Town"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.07,1,.07),
                            command = self.ville("6"),
                            pos = (-1.05,0,0),
                            state = DGG.DISABLED)
            
            #OnscreenText(text="Ice Town", style=1, fg=(1,1,1,1),pos=(-1.05,0), scale = .07)
    
        def ville(self, choix):
    
            OnscreenText(text="Annuler", style=1, fg=(1,1,1,1),pos=(-1.05,-0.8), scale = .1)
            OnscreenText(text="Go", style=1, fg=(1,1,1,1),pos=(-1.05,-0.9), scale = .1)
    
            if choix=="1":
                self.video("menu/video/020-060.avi")
            elif choix=="2":
                self.video("menu/video/100-140.avi")
            elif choix=="3":
                self.video("menu/video/180-220.avi")
            elif choix=="4":
                self.video("menu/video/260-300.avi")
            elif choix=="5":
                self.video("menu/video/340-380.avi")
            elif choix=="6":
                self.video("menu/video/020-060.avi")
    
            self.cancel = DirectButton(text = ("Annuler"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.1,1,.1),
                            command = self.stop(choix),
                            pos = (-1.05,0,-0.8),
                            state = DGG.NORMAL)
    
            self.valid = DirectButton(text = ("Go"),
                            frameColor = (0,0,0,0),
                            rolloverSound = None,
                            clickSound = None,
                            scale = (.1,1,.1),
                            command = sys.exit,
                            pos = (-1.05,0,-0.9),
                            state = DGG.NORMAL)
    
        def stop(self,ville):
    
            if ville=="1":
                self.video("menu/video/060-100.avi")
    
            #elif ville=="2":
                #self.video("menu/video/140-180.avi")
    
            #elif ville=="3":
                #self.video("menu/video/220-260.avi")
    
            #elif ville=="4":
                #self.video("menu/video/300-340.avi")
    
            #elif ville=="5":
                #self.video("menu/video/380-420.avi")
    
            #self.__init__("0")
    
        def video(self, choix):
    
            self.tex = MovieTexture("name")
            assert self.tex.read(choix), "Failed to load video!"
            cm = CardMaker("My Fullscreen Card");
            cm.setFrameFullscreenQuad()
            card = NodePath(cm.generate())
            card.reparentTo(render2d)
            card.setTexture(self.tex)
            card.setTexScale(TextureStage.getDefault(), self.tex.getTexScale())
            self.sound=loader.loadSfx(choix)
            self.tex.synchronizeTo(self.sound)
            self.sound.play()
            print self.sound
    


    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Questions intelligentes, réponses intelligentes. Mais si c'est débile, envoyez moi balader !
      13 novembre 2010 à 15:58:20

      Bonjour,

      Tes fonctions "ville", "stop", "video" ont l'air d'être écrites à l'intérieur de ta fonction "__init__", est ce que c'est voulu ? Je ne pense pas vu l'écriture de ton code.

      Essaye déjà de reprendre l'indentation de tes fonctions.
      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2010 à 3:11:35

        en fait, c'est un erreur au niveau de la copie, tous les def sont au même niveau, sauf que, par défaut, la balise de code du SDZ ramène la première ligne toute à gauche et donc pas d'alinéa possible.
        • Partager sur Facebook
        • Partager sur Twitter
        Questions intelligentes, réponses intelligentes. Mais si c'est débile, envoyez moi balader !
          17 novembre 2010 à 20:32:29

          Ok, donc ce n'est pas ta classe qui foire (en tout cas rien de visible dans ton code).

          Tu peux poster le code qui est chargé d'appeler ta classe ?
          • Partager sur Facebook
          • Partager sur Twitter

          Problème de boucle

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown