# BuggleWorld

Este mundo foi inventado por Lyn Turbak, na Wellesley College. Está cheio de Buggles, pequenos animais que entendem ordens simples e oferece numerosas possiblidades de interação com o mundo: apanhar e soltar objetos, pintar o chão, bater em paredes, etc.

## Métodos que os buggles entendem

A mover (Veja também a nota sobre exceções, abaixo)
Virar à esquerda Virar à direita Dar meia volta Mover para a frente Mover para trás | [!java|c]void [/!]left() [!java|c]void [/!]right() [!java|c]void [/!]back() [!java|c]void [/!][!python|java|scala]forward()[/!][!c]stepForward()[/!] or [!java|c]void [/!]forward([!java|c]int [/!]steps[!scala]:Int[/!]) [!java|c]void [/!][!python|java|scala]backward()[/!][!c]stepBackward()[/!] or [!java]void [/!]backward([!java|c]int [/!]steps[!scala]:Int[/!])
Obter coordenada X Obter coordenada Y Ajustar coordenada X Ajustar coordenada Y Ajustar posição | [!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[/!])
Observe que o ponto (0,0) está no canto superior esquerdo, o que é comum em ciência da computação.
Informações sobre o buggle
Obter a cor do corpo Ajustar a cor do corpo | [!java|c]Color [/!]getBodyColor()[!scala]:Color[/!] [!java|c]void [/!]setCorDoCorpo([!java|c]Cor [/!]c[!scala]:Cor[/!])
Procura por uma parede à frente Procura por uma parede atrás | [!java]boolean [/!][!c]int [/!]isFacingWall()[!scala]:Boolean[/!] [!java]boolean [/!][!c]int [/!]isBackingWall()[!scala]:Boolean[/!]
Obter direção Ajustar direção direções válidas são: | [!java|c]Direction [/!]getDirection()[!scala]:Direction[/!] [!java|c]void [/!]ajustaDireção([!java|c]Direção [/!]dir[!scala]:Direção[/!]) [!scala|java|python]Direção.[/!]NORTE, [!scala|java|python]Direção.[/!]LESTE, [!scala|java|python]Direção.[/!]SUL e [!scala|java|python]Direção.[/!]OESTE
Verifica se o buggle está atualmente selecionado na interface | [!java]boolean [/!][!c]int [/!]isSelected()[!scala]:Boolean[/!]
Sobre o pincel
Abaixar pincel Levantar pincel Obter a posição do pincel | [!java|c]void [/!]brushUp() [!java|c]void [/!]brushDown() [!java]boolean [/!][!c]int [/!]isBrushDown()[!scala]:Boolean[/!]
Muda a cor do pincel Obtém a cor do pincel | [!java|c]void [/!]setCorDoPincel([!java|c]Color [/!]c[!scala]:Color[/!]) [!java|c]Color [/!]getBrushColor()[!scala]:Color[/!]
A interagir com o mundo
Obtém a cor do chão | [!java|c]Color [/!]getGroundColor()[!scala]:Color[/!]
Procura por um "baggle" no chão Procura por um "baggle" na bolsa Apanhar um "baggle" Solta um "baggle" (veja a nota sobre exceções) | [!java]boolean [/!][!c]int [/!]isOverBaggle()[!scala]:Boolean[/!] [!java]boolean [/!][!c]int [/!]isCarryingBaggle()[!scala]:Boolean[/!] [!java]void [/!]pickupBaggle() [!java]void [/!]dropBaggle()
Procura por uma mensagem Adiciona uma mensagem Lê a mensagem Apaga a mensagem | [!java]boolean [/!][!c]int [/!]isOverMessage()[!scala]:Boolean[/!] [!java]void [/!]escreverMensagem([!java]String [/!][!c]char* [/!]msg[!scala]:String[/!]) [!java]String [/!][!c]char* [/!]readMessage()[!scala]:String[/!] [!java]void [/!]clearMessage()

## Cores válidas

Nome | Cor
[!scala|java|python]Cor.[/!]black |
[!scala|java|python]Cor.[/!]azul |
[!scala|java|python]Cor.[/!]ciano |
[!scala|java|python]Cor.[/!]cinzentoEscuro |
[!scala|java|python]Cor.[/!]cinzento |
[!scala|java|python]Cor.[/!]verde |
[!scala|java|python]Cor.[/!]cinzentoClaro |
[!scala|java|python]Cor.[/!]magenta |
[!scala|java|python]Cor.[/!]laranja |
[!scala|java|python]Cor.[/!]rosa |
[!scala|java|python]Cor.[/!]vermelho |
[!scala|java|python]Cor.[/!]branco |
[!scala|java|python]Cor.[/!]amarelo |

## Nota sobre exceções

Buggles normais lançam uma exceção BuggleWallException se os pede atravessar uma parede. Lançam uma exceção NoBaggleUnderBuggleException se os pede tirar um "baggle" de uma célula vazia, ou uma exceção AlreadyHaveBaggleException se eles já carregam um "baggle". Tentar soltar um "baggle" numa célula que já contém outro lança uma exceção AlreadyHaveBaggleException. Soltar um "baggle" quando não tem nenhum lança uma DontHaveBaggleException.

SimpleBuggles (ie, aqueles usados nos primeiros exercícios) exibem uma mensagem de erro num problema de forma que não precise saber o que é uma exceção.