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

NomeCor
[!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.