Ne pas effectuer le meme mouvement dans une boucle

dan1ye Messages postés 7 Date d'inscription jeudi 31 juillet 2014 Statut Membre Dernière intervention 6 août 2014 - Modifié par dan1ye le 6/08/2014 à 17:18
Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 - 6 août 2014 à 19:26
Bonjour,

J'aimerai savoir comment faire pour ne pas répéter une rotation, lorsque dans l'appel précédent de ma boucle je me suis déjà orienter dans la même direction.

C'est plus explicite si vous observez ce script.


import random
print "Initialement, je regarde vers le nord"
j=0
"deplacement dans un tableau"
for j in range(0,20):

for i in range(1,5):
Ce=random.randint(15,200)
Cw=random.randint(10,150)
Cn=random.randint(3,50)
Cs=random.randint(60,100)
Cne=random.randint(18,200)
Cnw=random.randint(0,100)
Cse=random.randint(0,150)
Csw=random.randint(0,300)
#choix de direction
SN=(int(Cn)-int(Cs))**2
EW=(int(Cw)-int(Ce))**2
NESW=(int(Csw)-int(Cne))**2
NWSE=(int(Cse)-int(Cnw))**2
CHOIX=max(SN,EW,NESW,NWSE)
#Mouvement
if (CHOIX==SN):
if (Cn >= Cs):
print "Tourne vers le Sud"
print "Va au sud"
else:
print "Tourne vers le Nord"
print "Va au nord"

elif (CHOIX==EW):
if (Cw >= Ce):
print "Tourne vers l'Est"
print "Va a l'Est"
else:
print "Tourne vers l'ouest"
print "Va a l'Oeust"
elif (CHOIX==NESW):
if (Csw >= Cne):
print "Tourne vers le Nord Est"
print "Va au Nord_Est"
else:
print "Tourne vers le Nord Ouest"
print "Va au Nord_Oeust"
elif (CHOIX==NWSE):
if (Cnw >= Cse):
print "Tourne vers le Sud Est"
print "Va au Sud_Est"
else:
print "Tourne vers le Sud Ouest"

print "Va au Sud_Oeust"
i+=1
print "nombre de tour avant reprise :", i
j+=1
print "nombre de reprise aleatoire :", j



Car le fait est que si je tourne vers le sud et avance vers le sud, au second appel il tourne encore vers le sud alors qu'il y fait déjà face; comment régler cela?

Merci d'avance

1 réponse

Whismeril Messages postés 19082 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 9 juillet 2024 658
6 août 2014 à 19:26
Bonjour, je ne connais pas Python, alors ma réponse sera le principe.
Tu déclares une variable dont la portée est supérieure à cette fonction (c-a-d qu'elle ne va pas se réinitialiser à chaque passage dans ta boucle).
Tu y entres la dernière direction en commençant par la direction initiale.
Au moment ou tu testes la nouvelle direction si la précédente est la même que la nouvelle tu ne fais rien.


0
Rejoignez-nous