# Le monde des Buggles

Ce monde a été inventé par Lyn Turbak, du Wellesley College. Il est peuplé de Buggles, petites bêtes qui comprennent des ordres simples, et offre de nombreuses possibilités d'interaction avec le monde : prendre ou poser des objets, colorier le sol, se cogner à des murs, etc.

## Méthodes comprises par les buggles

Bouger (voir aussi la note sur les exceptions, plus bas)
Tourner à gauche Tourner à droite Se retourner Avancer Reculer | [!java|c]void [/!]gauche() [!java|c]void [/!]droite() [!java|c]void [/!]retourne() [!java|c]void [/!][!python|java|scala]avance()[/!][!c]avancePas()[/!] or [!java|c]void [/!]avance([!java|c]int [/!]nbPas[!scala]:Int[/!]) [!java|c]void [/!][!python|java|scala]recule()[/!][!c]reculePas()[/!] or [!java]void [/!]recule([!java|c]int [/!]nbPas[!scala]:Int[/!])
Obtenir l'abscisse Obtenir l'ordonnée Changer l'abscisse Changer l'ordonnée Changer la position | [!java|c]int [/!]getX()[!scala]:Int[/!] [!java|c]int [/!]getY()[!scala]:Int[/!] [!java|c]void [/!]setX([!java|c]int [/!]x[!scala]:Int[/!]) [!java|c]void [/!]setY([!java|c]int [/!]y[!scala]:Int[/!]) [!java|c]void [/!]setPos([!java|c]int [/!]x[!scala]:Int[/!], [!java|c]int [/!]y[!scala]:Int[/!])
L'origine (0, 0) est dans le coin en haut à gauche, comme c'est souvent le cas en informatique.
Informations sur la buggle
Obtenir la couleur de la buggle Changer la couleur de la buggle | [!java|c]Color [/!]getCouleurCorps()[!scala]:Color[/!] [!java|c]void [/!]setCouleurCorps([!java|c]Color [/!]c[!scala]:Color[/!])
Chercher un mur devant Chercher un mur derrière | [!java]boolean [/!][!c]int [/!]estFaceMur()[!scala]:Boolean[/!] [!java]boolean [/!][!c]int [/!]estDosMur()[!scala]:Boolean[/!]
Obtenir la direction Changer la direction Les directions valides sont : | [!java|c]Direction [/!]getDirection()[!scala]:Direction[/!] [!java|c]void [/!]setDirection([!java|c]Direction [/!]dir[!scala]:Direction[/!]) [!scala|java|python]Direction.[/!]NORTH (nord), [!scala|java|python]Direction.[/!]EAST (est), [!scala|java|python]Direction.[/!]SOUTH (sud) et [!scala|java|python]Direction.[/!]WEST (ouest)
Renvoi si la buggle est actuellement sélectionnée dans l'interface | [!java]boolean [/!][!c]int [/!]estChoisie()[!scala]:Boolean[/!]
À propos de la brosse
Baisser la brosse Lever la brosse Obtenir la position de la brosse | [!java|c]void [/!]leveBrosse() [!java|c]void [/!]baisseBrosse() [!java]boolean [/!][!c]int [/!]estBrosseBaissee()[!scala]:Boolean[/!]
Modifier la couleur de la brosse Obtenir la couleur de la brosse | [!java|c]void [/!]setCouleurBrosse([!java|c]Color [/!]c[!scala]:Color[/!]) [!java|c]Color [/!]getCouleurBrosse()[!scala]:Color[/!]
Interagir avec le monde
Obtenir la couleur du sol | [!java|c]Color [/!]getCouleurSol()[!scala]:Color[/!]
Vrai si biscuit par terre Vrai si on porte un biscuit Ramasse un biscuit Poser un biscuit (voir la note sur les exceptions) | [!java]boolean [/!][!c]int [/!]estSurBiscuit()[!scala]:Boolean[/!] [!java]boolean [/!][!c]int [/!]porteBiscuit()[!scala]:Boolean[/!] [!java]void [/!]prendBiscuit() [!java]void [/!]poseBiscuit()
Chercher un message Ajouter un message Lire le message Effacer le message | [!java]boolean [/!][!c]int [/!]estSurMessage()[!scala]:Boolean[/!] [!java]void [/!]ecritMessage([!java]String [/!][!c]char* [/!]msg[!scala]:String[/!]) [!java]String [/!][!c]char* [/!]litMessage()[!scala]:String[/!] [!java]void [/!]effaceMessage()

## Couleurs valides

Nom | Couleur
[!scala|java|python]Color.[/!]black |
[!scala|java|python]Color.[/!]blue |
[!scala|java|python]Color.[/!]cyan |
[!scala|java|python]Color.[/!]darkGray |
[!scala|java|python]Color.[/!]gray |
[!scala|java|python]Color.[/!]green |
[!scala|java|python]Color.[/!]lightGray |
[!scala|java|python]Color.[/!]magenta |
[!scala|java|python]Color.[/!]orange |
[!scala|java|python]Color.[/!]pink |
[!scala|java|python]Color.[/!]red |
[!scala|java|python]Color.[/!]white |
[!scala|java|python]Color.[/!]yellow |

## Note sur les exceptions

Les buggles normales lèvent une exception BuggleWallException si on cherche à leur faire traverser un mur. Elles lèvent une exception NoBaggleUnderBuggleException si vous cherchez à prendre un biscuit dans une case qui n'en contient pas, ou une exception AlreadyHaveBaggleException si vous portez déjà un biscuit. Tenter de déposer un biscuit sur une case qui en contient déjà lève une exception AlreadyHaveBaggleException. Tenter de poser un biscuit alors qu'on n'en a pas lève une exception DontHaveBaggleException.

Les "SimpleBuggles" (c.-à-d., celles utilisées dans les premiers exercices) affichent un message d'erreur sans que vous ayez à vous soucier de ce qu'est une exception.