SOLUTION TÂCHE 2.01
SOLUTION TÂCHE 2.02
SOLUTION TÂCHE 2.03
Décrivez avec des mots ce que réalise le code suivant.
Supprime une feuille s’il y en a une, dépose une feuille là où il n’y en n’a pas.Puis décrivez chacune d’entre elles dans un diagramme.
SOLUTION TÂCHE 2.04
Décrivez avec des mots ce que réalise le code suivant.
Si Kara est sur une feuille elle avance d’un pas.Puis décrivez chacune d’entre elles dans un diagramme.
SOLUTION TÂCHE 2.05
Décrivez avec des mots ce que réalise le code suivant.
Supprime la feuille s’il y a un arbre sur la gauche.Puis décrivez chacune d’entre elles dans un diagramme.
SOLUTION TÂCHE 2.06 : Autour de l’arbre II
public void act() { if (treeFront()) { goAroundTree(); } else { move(); } if (onLeaf()) { removeLeaf(); stop(); } } public void goAroundTree() { turnLeft(); move(); turnRight(); move(); move(); turnRight(); move(); turnLeft(); }
SOLUTION TÂCHE 2.07 : Conditions imbriquées
public void act() { if (treeLeft()) { move(); } else { if (onLeaf()) { removeLeaf(); move(); } else { move(); } } }
SOLUTION TÂCHE 2.08 : Peur du tunnel
public void act() { if (treeLeft() && treeRight()) { putLeaf(); stop(); } else { move(); } }
SOLUTION TÂCHE 2.09 : Feuille sur l’arbre
public void act() { if (treeLeft() || treeRight()) { putLeaf(); move(); } else { move(); } if (onLeaf()) { stop(); } }
SOLUTION TÂCHE 2.10 : Réaliser une ligne de feuilles
public void act() { if (!onLeaf()) { putLeaf(); } if (!treeFront()) { move(); } else { stop(); } }
SOLUTION TÂCHE 2.11 : Round Trip
public void act() { if (onLeaf()) { removeLeaf(); } else { if (!treeFront()) { move(); } else { if (!treeLeft()) { turnLeft(); move(); } else { turnRight(); move(); } } } }
SOLUTION TÂCHE 2.12 : Kara joue à Pacman
public void act() { if (!treeFront()) { removeLeaf(); findNextLeaf(); } else { removeLeaf(); stop(); } } public void findNextLeaf() { // look for leaf in front move(); if (!onLeaf()) { // no leaf in front, go back and look left turnAndGoBack(); turnRight(); move(); if (!onLeaf()) { // no leaf left; leaf must be on right side turnAndGoBack(); move(); } } } public void turnAndGoBack() { turnLeft(); turnLeft(); move(); }
SOLUTION TÂCHE 2.13
# | Code | Explication | Nbre de pas |
---|---|---|---|
a. | while (treeLeft()) { move(); } |
Se déplace tant qu'il y a un arbre sur sa gauche. | 4 |
b. | while (treeRight()) { move(); } |
Se déplace tant qu'il y a un arbre sur sa droite. | 0 |
c. | while (treeLeft() || treeRight()) { move(); } |
Se déplace tant qu'il y a un arbre sur sa gauche ou sur sa droite ou de chaque côté. | 5 |
d. | if (treeLeft()) { move(); } while (treeLeft() && treeRight()) { move(); } |
D'abord, se déplace s'il y a un arbre sur la gauche ; Puis se déplace tant qu'il y a un arbre à gauche et à droite. | 4 |
e. | while (!treeFront) { if (treeLeft()) { move(); } } |
Aussi longtemps qu'il n'y a pas d'arbre de-vant Kara : S'il y a un arbre à gauche, fait un pas. **Attention : boucle infinie !** | 4 |
SOLUTION TÂCHE 2.14 : Autour de l’arbre III
public void act() { while (!onLeaf()) { if (treeFront()) { goAroundTree(); } else { move(); } } // Found leaf --> eat it removeLeaf(); stop(); } public void goAroundTree() { turnLeft(); move(); turnRight(); move(); while (treeRight()) { move(); } turnRight(); move(); turnLeft(); }
SOLUTION TÂCHE 2.15 : Grimper
public void act() { while (treeFront()) { oneStepUp(); } stop(); } public void oneStepUp() { turnLeft(); move(); turnRight(); move(); }
SOLUTION TÂCHE 2.16 : Kara garde forestier
public void act() { makeOneStep(); } public void makeOneStep() { if (!treeRight()) { // no tree right --> go right turnRight(); move(); } else { // there is a tree right if (!treeFront()) { // no tree in front --> move move(); } else { // trees right and front if (!treeLeft()) { // no tree left --> go left turnLeft(); move(); } else { // trees right, front and left: dead end turnLeft(); turnLeft(); move(); } } } }