Partage
  • Partager sur Facebook
  • Partager sur Twitter

un nombre qui augmente et diminue entre 2 bornes

pygame

    6 avril 2015 à 18:20:53

    Bonsoir,

    Dans le cadre d'un projet en ISN (un jeu), j'aurais besoin que pour une variable (appelons la X), qui est initialisée à 0 avant la boucle du jeu, puisse, pendant la boucle, augmenter et diminuer entre 2 bornes imposées.

    Par exemple : X = 0

    dans ma boucle, je choisis l'intervalle [0,10]

    je veux que dans ma boucle, X = X + 1, puis quand il atteint 10, X = X - 1, puis quand il atteint 0, X = X + 1, et ainsi de suite...

    J'ai recherché modules et fonctions mais introuvable...

    Merci d'avance pour vos réponses !

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2015 à 22:45:44

      salut :)

      voici une solution à ton problème:

      X = 0
      #On utilise une variable booléen pour savoir on est dans quel régime (X=X+1 ou X=X-1)
      ascendant = True
      
      while True:
         #dans la boucle
         
         if ascendant:
            X = X + 1
            if X == 10:
               ascendant = False
         else:
            X = X - 1
            if X == 0:
               ascendant = True


      j'espère que ça marchera :)

      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2015 à 23:45:41

        Et en voilà une autre:

        from itertools import cycle, chain
        

        for x in cycle(chain(range(0, 10), range(10, 0, -1))):

        print(x)
        
        </pre>
        • Partager sur Facebook
        • Partager sur Twitter
          7 avril 2015 à 7:55:07

          Merci pour vous réponses rapides ! Je suis sur mon portable je re-editerais rais ce post vous donner un retour. JJe pense utiliser la deuxième solution qui me semble plus courte, surtout si un module permet de le faire. 

          Merci ! 

          ---EDIT---

          @lypnol, je n'arrive pas à faire fonctionner ta boucle, rien ne s'affiche. Je dois mettre ça dans ma boucle de jeu ?

          De plus même en le faisant tourner tout seul je n'ai rien qui s'affiche;

          @entwanne, le problème c'est que ça fait 0->10 en boucle

          et pas 0->10 puis 10->0 puis 0->10 puis...................etc

          -
          Edité par saul.goodman12400 7 avril 2015 à 12:55:10

          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2015 à 16:43:52

            Ca va être difficile pour toi de coder ton jeu si tu n'arrives pas à faire un simple print d'une variable.
            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2015 à 17:03:31

              J'ai testé mon code sur Python 2 et 3, et il n'a pas le comportement que tu décris. La boucle part de 0, le nombre s'incrémente jusqu'à atteindre 1à, puis décrémente jusque 0, et cela en boucle.

              • Partager sur Facebook
              • Partager sur Twitter
                7 avril 2015 à 18:35:48

                Salut :)

                c'est normal qu'il ne s'affiche rien quand tu exécute mon code, je n'ai mis aucun print dedans. tu dois l'ajouter une ligne à la fin de la boucle si tu veux voir l'état de la variable X.

                X = 0
                #On utilise une variable booléen pour savoir on est dans quel régime (X=X+1 ou X=X-1)
                ascendant = True
                 
                while True:
                   #dans la boucle
                  if ascendant:
                    X = X + 1
                    if X == 10:
                      ascendant = False
                  else:
                    X = X - 1
                    if X == 0:
                      ascendant = True
                #On affiche la valeur de X
                  print(X)
                



                • Partager sur Facebook
                • Partager sur Twitter
                  7 avril 2015 à 19:01:47

                  Merci Jevanni pour la façon très courtoise dont tu m'as fait remarqué mon erreur d'étourderie. C'est humain non ?

                  --> lypnol, merci pour ta réponse ! Un simple oubli du print()... je vais tester ça ! (edit) : magnifique ! ça marche parfaitement ! Merci, je vais essayer de comprendre la solution de entwanne aussi à présent :)

                  --> entwanne, j'ai pris la dernière version de python, et curieusement ça marche, à mon avis j'ai du faire une erreur quelque part en retapant ces deux lignes, pourtant j'avais vérifié plusieurs fois... Bref ta solution est plutôt efficace, ça incrémente trop vite pour ce que je veux faire mais une simple division et une remise sous forme d'entier et j'obtiens ce que je veux ! Cependant,vu que c'est une sorte de boucle comment l'intégrer dans ma boucle principale ? 

                  Voilà je ne sais pas si j'ai été très clair et précis concernant ces deux boucles qui se gênent entre elles, et pardonnez moi si mes erreurs peuvent vous sembler plutôt bêtes mais j'essaie tant bien que mal de résoudre ce problème pour vous embêter le moins possible !

                  Merci d'avance

                  -
                  Edité par saul.goodman12400 7 avril 2015 à 19:18:03

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 avril 2015 à 15:05:19

                    Pas de méchanceté, j'ai juste l'impression que tu t'embarques dans un projet sans connaître les bases du langage, ce qui ne peut qu'être très handicapant. Dis nous plutôt c'est quoi l'objectif de ton jeu, et peut être donner ton code en entier, ou alors juste une partie.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    un nombre qui augmente et diminue entre 2 bornes

                    × 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