12. Si seulement Reeborg pouvait décider tout seul...

Si, si, si...

Attendez une minute ! Reeborg peut prendre des décisions tout seul. Je ne vous l'ai pas dit ?


Premières décisions

Eh bien, pour dire la vérité, Reeborg a besoin d'aide pour décider : vous devez lui donner les choix qu'il doit décider de prendre. Par exemple, quand Reeborg rencontre une sonnette, vous pouvez lui donner certains choix à faire : vous pouvez lui demander de la ramasser comme ceci :

if on_beeper():
pick_beeper()

[NdT : if en anglais = si]

Voyons ce que veut dire le code ci-dessus :

L'explication peut avoir l'air compliquée quand vous la lisez mais il est en fait plutôt simple d'utiliser une instruction if. Voyons cela dans un exemple simple. Supposons que nous voulions faire faire à Reeborg 9 pas, en ramassant toutes les sonnettes qui sont sur son chemin (Nous supposons qu'il ne peut y avoir au plus qu'une seule sonnette à chaque point). Par exemple, la position de départ peut ressembler à ceci :

avancer_ramasser_début

et nous voulons que la position finale soit :

avancer_ramasser_fin

Nous voulons donc demander à Reeborg de :

en répétant les étapes ci-dessus 9 fois. Rappelez-vous que si nous demandons à Reeborg de ramasser une sonnette quand il n'y en a pas, il se plaindra et s'éteindra. Voici comment nous pouvons faire cela :

def avancer_et_ramasser():
move()
if on_beeper():
pick_beeper()

repeat(avancer_et_ramasser, 9)
turn_off()

Essayez-le !


Temps de la récolte encore !

C'est le temps de la récolte, encore une fois ! Mais cette fois les graines n'ont pas toutes germé et certaines carottes manquent. Faites que Reeborg cueille toutes les carottes (représentées par des sonnettes) dans ce jardin. Le fichier monde est harvest3.wld. Revoyez le deuxième exercice de récolte précédent que vous avez fait. Il y a des chances que tout ce que vous ayez à faire est de changer l'instruction recolter_une_rangee() pour qu'elle ressemble à l'instruction avancer_et_ramasser() ci-dessus. Mais il est possible que vous ayez besoin d'un changement de plus  [Par exemple, dans ma solution au problème de récolte, j'ai défini une instruction  ramasser_et_avancer() qui avait besoin d'un changement mineur aussi].

récolte début

Remarquez que votre nouveau programme devrait aussi fonctionner comme il est avec le fichier de monde harvest1.wld que nous avons utilisé avant. Essayez le !

précédent Éviter les répétitions, encore ! - début - Écoute moi... sinon....suivant