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...
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
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
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.
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)
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
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.
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.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique