Exemple de scripts
Dans les exemples qui suivent, vous verrez comment les instructions de base et les structures de programmation peuvent conduire à d'intéressants comportement du robot. Essayez de comprendre le script et comment il fonctionne. Le mieux est d’essayer de copier le code et de le coller dans le panneau des script du robot. Assurez vous d'avoir la carte appropriée avant d'utiliser ce script.
exemple 1 : ecrivez votre nom
Le robot ayant la possibilité de peindre, vous pouvez créer un programme simple de dessin. En utilisant " peindreEnBlanc" "arreterDePeindre" vous pouvez commander au robot de peindre ou non avec le pinceau. Quand le robot se déplacera, il tracera une ligne au sol. Ainsi, vous pouvez écrire des lettres comme le "A".
Sur la carte "openArea.map" vous avez assez de place pour créer une petite oeuvre d'art. Essayez d'utiliser la télécommande ( menu "exécuter>télécommande") pour faire peindre le robot
Voir aussi les instructions : peindre, se déplacer |
|
# Lettre "A"
peindreEnBlanc()
avance(2)
droite()
avance(1)
droite()
avance(2)
recule(1)
droite()
avance(1)
arreterDePeindre()
exemple 2 : trouver le point
Sur la carte "findSpot1.map", vous vous trouvez Sur la carte "findSpot1.map", vous trouverez sur la gauche un coin contenant un point blanc. Considérez que vous ne savez pas à l'avance à quelle distance est le coin. Comment le robot est il capable de le trouver s'il commence quelque part le long du mur? Bien sûr, vous pouvez compter le nombre de cases que le robot doit franchir, mais il y a un meilleur moyen.
Faites avancer le robot d'une case et faites lui vérifier s'il détecte un point à sa gauche, il devra se positionner dessus pour terminer. Sinon, il doit avancer d'une autre case et vérifier, à nouveau, la présence d'un point. Ceci peut être répéter en boucle.
Voir aussi les instructions basiques : se déplacer, voir, structures de programmation : boucle, Si, fin |
|
repeter(){
si(blancAGauche()){
# There's a white spot on your gauche
gauche()
avance(1)
fin
}
sinon{
# There's no white spot yet
avance(1)
}
}
Un autre moyen qui donne le même résultat est le script suivant. Ici, le robot répète l'instruction "avancer" jusqu’à ce qu'il ne voit plus du tout le mur (cela doit être le coin que nous recherchons). Ensuite, le robot tourne et avance pour se positionner sur le point.
repeterTantQue(obstacleAGauche()){
avance(1)
}
gauche()
avance(1)
exemple 3 : suiveur de ligne
Sur la carte "defautl.map" vous pouvez voir une ligne blanche à l'Est. Cette ligne forme une piste à travers les obstacles. Comment faire pour que le robot suive la piste?
La solution est un peu similaire à l'exemple précédent. Après que le robot soit emmené au début de la piste, il détermine que faire pas à pas.
Voir aussi : instructions basiques : déplacer, voir, structure de programmation : boucle, procédures, Si, fin. |
|
# aller au début de la ligne
droite()
avance(8)
# suivre la piste pas à pas
repeter()
{
si(blancDevant()){
avance(1)
}
sinon si(blancADroite()){
droite()
}
sinon si(blancAGauche()){
gauche()
}
sinon si(obbstacleDevant()){
fin
}
}
Une autre approche est d'utiliser une procédure appelée récursive. Dans le script suivant, vous pouvez voir qu'une procédure "follow" est définie. Dans cette procédure, après que que l'étape correcte soit exécutée, vous voyez que "follow" est utilisé dans sa propre définition. Ce que vous avez est une séquence de "follow(...follow(...follow()...)...) qui réalise la correcte action à chaque étape pour réussir la tache. La définition cyclique est appelée récursion et vous risquez de trouver cela bizarre la première fois que vous le verrez. Pas de soucis, lorsque vous l'utiliserez, tout s’éclaircira.
# aller au début de la ligne
droite()
avance(8)
# commencer le pistage
follow()
# définition récursive du pistage
procedure follow(){
si(blancDevant()){
avance(1)
follow()
}
sinon si(blancADroite()){
droite()
follow()
}
sinon si(blancAGauche()){
gauche()
follow()
}
sinon si(obbstacleDevant()){
# terminer l'appel à la procédure actuelle
# (parce qu’il n'y a rien après ce retourne, tous les appels doivent être terminés
# et le programme stoppé
retourne
}
}
exemple 4 : explorateur de labyrinthe
Comment s'échapper d'un labyrinthe en général? Ce qui apparait comme une question difficile a une solution simple. En suivant le côté droit du mur (ou le côté gauche) en permanence, vous trouverez infailliblement la sortie.
Le script suivant permet au robot de trouver la balise pour la carte "maze1.map".
Voir aussi : instruction basiques : déplacer, voir, structures de programmation : boucle, Si, Fin. |
|
repeter(){
si(obstacleADroite()){
si(rienDevant()){
avance(1)
}
sinon{
gauche()
}
}
sinon{
droite()
avance(1)
}
si(baliseDevant()){
prendre()
fin
}
}
|