# BuggleWorld

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

## Métodos que os buggles entendem

Se movendo (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 [/!]esquerda()
[!java|c]void [/!]direita()
[!java|c]void [/!]voltar()
[!java|c]void [/!][!python|java|scala]avançar()[/!][!c]avançarUmPasso()[/!] ou [!java|c]void [/!]avançar([!java|c]int [/!]passos[!scala]:Int[/!])
[!java|c]void [/!][!python|java|scala]recuar()[/!][!c]recuarUmPasso()[/!] ou [!java]void [/!]recuar([!java|c]int [/!]passos[!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 [/!]getCorDoCorpo()[!scala]:Cor[/!] [!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 [/!]estáDeFrenteParaParede()[!scala]:Boolean[/!] [!java]boolean [/!][!c]int [/!]estáDeCostasParaParede()[!scala]:Boolean[/!]
Obter direção Ajustar direção direções válidas são: | [!java|c]Direção [/!]getDireção()[!scala]:Direção[/!] [!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 [/!]estáSelecionado()[!scala]:Boolean[/!]
Sobre o pincel
Abaixar pincel Levantar pincel Pegar a posição do pincel | [!java|c]void [/!]levantarPincel() [!java|c]void [/!]abaixarPincel() [!java]boolean [/!][!c]int [/!]pincelEstáAbaixado()[!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 [/!]getCorDoPincel()[!scala]:Color[/!]
Interagindo com o mundo
Obtém a cor do chão | [!java|c]Color [/!]getCorDoChão()[!scala]:Color[/!]
Procura por um "baggle" no chão Procura por um "baggle" na bolsa Pega um "baggle" Solta um "baggle" (veja a nota sobre exceções) | [!java]boolean [/!][!c]int [/!]estáSobreBaggle()[!scala]:Boolean[/!] [!java]boolean [/!][!c]int [/!]estáCarregandoBaggle()[!scala]:Boolean[/!] [!java]void [/!]pegarBaggle() [!java]void [/!]soltarBaggle()
Procura por uma mensagem Adiciona uma mensagem Lê a mensagem Apaga a mensagem | [!java]boolean [/!][!c]int [/!]estáSobreMensagem()[!scala]:Boolean[/!] [!java]void [/!]escreverMensagem([!java]String [/!][!c]char* [/!]msg[!scala]:String[/!]) [!java]String [/!][!c]char* [/!]lerMensagem()[!scala]:String[/!] [!java]void [/!]limparMensagem()

## Cores válidas

Nome | Cor
[!scala|java|python]Cor.[/!]black |
[!scala|java|python]Cor.[/!]azul |
[!scala|java|python]Cor.[/!]ciano |
[!scala|java|python]Cor.[/!]cinzaEscuro |
[!scala|java|python]Cor.[/!]cinza |
[!scala|java|python]Cor.[/!]verde |
[!scala|java|python]Cor.[/!]cinzaClaro |
[!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 você pede para eles atravessarem uma parede. Eles lançam uma exceção NoBaggleUnderBuggleException se você pede para eles pegarem 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 você 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 você não precise saber o que é uma exceção.