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();
}
}
}
}