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 | Se déplace tant qu’il y a un arbre sur sa droite. | 0 | Se déplace tant qu’il y a un arbre sur sa gauche ou sur sa droite ou de chaque côté. | 5 | 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 | Aussi longtemps qu’il n’y a pas d’arbre de-vant Kara : S’il y a un arbre à gauche, fait un pas.
|
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(); } } } }