Вы находитесь на странице: 1из 16

1

TUTORIAL
Primeiros
passos

Como escrever, inicializar e executar um programa

Movendo o rob

Testes e condies lgicas

Resumo

Como escrever, inicializar e executar um programa

Lanamento RobotProg: voc ver duas janelas: a janela do programa onde voc vai desenhar
o fluxograma do programa e uma paleta contendo ferramentas para desenhar o fluxograma.
* Escreva o fluxograma.
Para construir o fluxograma a seguir:
- Para cada bloco fluxograma: pegue o bloco na paleta e clique dentro da janela do programa
para colocar o bloco l.
- Para ligar os blocos em conjunto, escolher a ferramenta ligao, clique num bloco de sada, e
mova o rato para a entrada do bloco seguinte. A ligao ser criada automaticamente quando
o ponteiro do rato chega a entrada do bloco seguinte.



Um fluxograma deve conter um bloco de incio e apenas uma para mostrar onde o programa
comea, e um ou mais blocos terminais


2

* Exibio do rob na plataforma: Escolha Janela> menu da janela de execuo.
O terreno est em uma outra janela com botes no topo para controlar a execuo



* Inicializao do programa: clique no boto INIT ou escolhe Execution> menu
Initialization.
O programa verificado: se no contiver nenhum erro, voc pode definir a posio inicial do
rob e direo de clicar num azulejo cho ou no rob, o boto INIT mostra a imagem de o
rob para ser inicializado.
Se o programa contm um erro, voc no pode execut-lo, voc deve primeiro corrigir o erro.
* Execute o programa: clique no boto Executar ou escolha Execution> menu Executar.

Movendo o rob

H trs comandos para mover o rob: Avanar, Virar direita e virar esquerda
Esses comandos aparecem em blocos retangulares, disponveis na barra de ferramentas.
* O comando avanar faz com que o rob se mova para o azulejo seguinte. Mas cuidado: se o
rob est enfrentando uma parede quando recebe o comando, ele vai bater na parede, isto
um erro de execuo e para o programa.
* Os comandos Virar direita e virar esquerda fazem o rob girar 90 sua direita ou sua
esquerda. Ele permanece no mesmo azulejo.

- Feche a janela do programa anterior e selecione no menu Arquivo> Novo programa.
- Escreva um programa que tenha um rob que execute um U-Turn. Execute o programa.
Observaes:
- um U-Turn simplesmente virar direita (ou esquerda) duas vezes.
- na janela do programa, voc pode selecionar o prprio U-Turn. No fim da execuo, o
RobotProg ir verificar se o objetivo foi atingido.

Testes e condies lgicas

- Fechar a janela do programa anterior e selecionar no menu Arquivo> Novo programa.
Agora, voc vai escrever um programa para o robot se aproximar de uma parede.
- Escolha Avanar prximo de uma parede.
* Programao teste um:
- Desenhar e executar o fluxograma a seguir:


Para alterar o texto dentro de um bloco de teste, escolha a ferramenta selecionar e clique duas
vezes no bloco.
A condio lgica dentro de um bloco de teste avaliada quando o bloco executado. O
resultado verdadeiro ou falso. Se o resultado for verdadeiro, a execuo continua no bloco
aps a sada Y (Y para o Sim ou verdadeiro), se o resultado for falso, a execuo continua no
bloco aps a sada N (N para No ou falso)
3

Neste exemplo, a condio lgica WallAhead, e uma palavra-chave de devolver um
resultado lgico (verdadeiro ou falso), em relao posio do rob e a condio avaliada no
momento. Se o rob est em frente de uma parede, o programa termina, mas o rob move-se
e o teste executado novamente.
* A execuo Passo a passo e exibio estado atual.
Quando um programa executado, voc pode clicar no boto Pausa para interromper a
execuo, e fazer a prxima instruo ser executada clicando no boto Prximo passo. Voc
tambm pode clicar no boto variveis Mostrar para exibir o estado atual. Uma janela
exibida, mostrando vrias palavras-chave com os seus valores
A listagem completa de palavras-chave est disponvel com a ajuda do rob> menu Resumo
de linguagem.
* Condies lgicas
uma expresso lgica uma expresso que d verdadeiro ou falso como resultado. possvel
combinar vrias palavras-chave com os operadores lgicos como E, Ou, Nenhum. Exemplo:
WallAhead E WallOnLeft
Voc pode encontrar uma descrio detalhada da documentao: ver captulo linguagem
Robot, funes predefinidas

Neste exerccio, caminha-se para atingir o objetivo "V para um canto"
O mtodo para alcanar esse objetivo pode ser a seguinte: o primeiro rob vai em frente de
uma parede, em seguida, move-se ao longo da parede, at atingir uma parede em frente.
Para testar se o rob chegou a um canto, voc pode usar a condio lgica WallAhead E
(WallOnLeft Ou WallOnRight)
Resumo



















4


Simplificar mais fcil

Por sub-rotinas?

Posio do rob e direo

Modificao cho

Criar uma sub-rotina

Programa principal e sub-rotinas exibir

Chamada de subrotina

O rob vai para o centro do solo

Resumo

Por sub-rotinas?

Muitas vezes, um programa escrito para resolver um problema pode ser muito complicado. Por isso,
necessrio analisar o problema e dividi-lo em problemas mais elementares. Subrotinas permitem
ao programador separar o programa em partes mais pequenas que so mais fceis de resolver. Uma
subrotina pode ser chamada muitas vezes no mesmo programa, evitando assim a repetio do
mesmo cdigo em vrios locais do programa.
A finalidade do programa construdo neste captulo ter o robot a ir para o azulejo central, por
qualquer inicial posio ou direo. Este programa ser dividido em sub-rotinas.

Posio do rob e direo



Uma posio do azulejo dada pelas suas coordenadas x, y. x e y so inteiros positivos. As
coordenadas do primeiro azulejo em (x,y) so 1, 1. As coordenadas do ltimo azulejo da primeira
linha e primeira coluna so 9,1 no exemplo acima.

* Posio do rob:
Num programa, a posio do rob indicada pelas duas palavras-chave xRobot e yRobot. Durante a
execuo do programa, xRobot e yRobot tero os valores x, y correspondentes ao azulejo ocupado
pelo rob.

* Direo do Robot:
Num programa, a direo do rob indicada pelas duas palavras-chave dxRobot e dyRobot. Os
valores so iguais variao da xRobot e yRobot quando o robot se move para a frente do azulejo
5

seguinte:
- se o rob estiver virado para a direita da plataforma: dxRobot 1 e dyRobot 0
- se o rob estiver virado para o lado esquerdo da plataforma: dxRobot -1 e dyRobot 0
- se o rob estiver voltado para a frente da plataforma: dxRobot 0 e dyRobot 1
- se o rob estiver virado para a traseira da plataforma: dxRobot 0 e dyRobot -1
Os nicos valores possveis de dxRobot e dyRobot so 0, 1 e -1. Se um dos valores for 0 o outro
diferente de 0. Para o exemplo mostrado na figura acima dxRobot 1 e dyRobot 0

Modificao do cho

A plataforma pode ser editada, exceto durante a execuo de um programa.
possvel adicionar ou remover as paredes no interior da plataforma, as paredes em torno da
plataforma no podem ser removidas. Alguns programas so mais desafiadores quando a plataforma
contm paredes internas.
Agora, vai-se construir o terreno que ser usado neste tutorial.
a plataforma mostrada acima
- Escolha no menu Ground> Modificar. Aparece a janela de modificao da plataforma.
- Escolha o menu Ground> New para criar uma nova plataforma. Aparecero os parmetros da
janela plataforma.
- Selecione uma largura e uma profundidade de 9 azulejos e clique no boto OK para validar.
- Clique no boto Robs clique + boto abaixo: um novo rob aparece na plataforma.
- Clique no azulejo de coordenadas 3,3 para definir a posio do rob inicial (usado quando a
execuo comea).
- Clique no boto Tiles, clique no azulejo de coordenadas 5,5. A cor deste azulejo torna-se mais
clara. Este azulejo o centro do cho.

Com a janela de modificao da plataforma, podem-se adicionar ou remover paredes e tomadas de
energia. Podem-se tambm salvar e abrir arquivos de plataforma. A plataforma editada acima foi
salva na Ground9x9.bog arquivo dentro da pasta de arquivo do tutorial.
- Clique em Use este boto plataforma para fechar a janela de modificao plataforma. Agora, se se
pretender mostrar a plataforma com a janela de menu da janela> Execuo, podemos ver a nova
plataforma.

Criar uma sub-rotina

* Aqui, vai-se construir uma rotina para ligar o rob esquerda da plataforma.
Subrotinas * esto disponveis no nvel 2. O nvel atual mostrado na barra de ferramentas.
Caso o nvel atual seja 1, escolha a configurao menu Nvel> e selecione o nvel 2.
Se a janela do programa no estiver vazia, feche-a e escolha o menu Arquivo> Novo programa
* Para criar uma subrotina nova, escolha o menu Programao> nova sub-rotina. A nova sub-
rotina toma o lugar do programa principal e agora exibido na janela do programa.
* Nome Subrotina: cada sub-rotina identificada pelo nome que se lhe atribui. Por defeito, quando
a rotina criada, ela recebe o nome de Subroutine1. Substitua esse nome por
TurnTowardsGroundLeft



Um nome de sub-rotina pode conter letras e nmeros mas no pode haver espaos e deve comear
com uma letra. O seu comprimento mximo de 32 caracteres. Ela deve ser diferente das
expresses lingusticas do rob.
* Construir o fluxograma subrotina TurnTowardsGroundLeft:
Um fluxograma da subrotina construdo da mesma forma que o fluxograma do programa principal.
Deve conter um e apenas um bloco de incio e pelo menos um bloco de fim End.
Aqui, o fluxograma inclui a palavra-chave dxRobot. Quando o rob est virado para a esquerda, o
valor de dxRobot -1.
Se dxRobot for diferente de - 1, comeamos por rodar o rob de 90 e ento depois refazer o teste.
6




Pode-se verificar se o fluxograma est correto, clicando no boto Verificar do fluxograma no
cabealho da sub-rotina.

Exibir o Programa principal e sub-rotinas
* Programa principal e subrotinas List: Clique List no boto na parte inferior da janela do
programa para exibir (ou ocultar) esta lista. A lista aparece no lado esquerdo da janela do programa.
O primeiro elemento desta lista o programa principal. Ele tem o mesmo nome da janela e do
arquivo (no caso de ter sido salvo).
Elementos seguintes so criados sub-rotinas. Clique em qualquer elemento da lista para exibir o seu
fluxograma.
* Quando uma subrotina exibida, tambm se pode clicar no boto principal Main para mostrar o
programa principal.

Chamar uma subrotina

* Uma subrotina executada quando ela chamada do programa principal ou uma sub-rotina. Isto
feito atravs da insero de um bloco de chamada de subrotina no fluxograma.
A fim de testar a execuo da sub-rotina TurnTowardsGroundLeft, construir o programa principal
que contm a chamada de subrotina:
- apresentar programa principal
- construir o fluxograma a seguir:


* Execuo de sub-rotinas: uma subrotina a execuo do bloco de chamadas faz com que a
execuo da subrotina comear bloco, ento a subrotina executada at ao seu bloco de
extremidade, em seguida, a execuo continua com o bloco seguinte ao bloco de chamada de
subrotina.
- Inicializar o programa (escolha de Execuo> Inicializao menu ou clique no boto INIT)
- Execute o programa.
- Aps a execuo, clique no rob para mudar sua direo inicial, execute novamente o programa:
em qualquer caso, o rob enfrenta esquerda do cho quando o fim do programa

Construir e testar um novo nomeado sub-rotina TurnTowardsGroundRight



O rob vai para o centro da plataforma

* O centro de solo est na interseco da coluna central e a linha central (ver Ground).
A fim de que o robot vai para o centro do solo, tem que ir a um ladrilho na coluna central, em
seguida, para um azulejo no centro linha. Para atingir esse objetivo, precisamos de duas sub-
rotinas.
* Subrotina GoToCentralColumn:
- Criar uma nova sub-rotina com o nome GoToCentralColumn
7

- Construa fluxograma a seguir:


A abcissa (x) de ladrilhos de linhas centrais tem o valor 5. Se a posio do robot xRobot menor do
que 5, ns gir-lo de modo que torna-se orientada para o solo para a direita, caso contrrio, rod-la
em direo ao solo para a esquerda, ento faz-la avanar at atingir a linha central.
- No programa principal, inserir um GoToCentralColumn chamada de subrotina e execute o
programa para testar a subrotina
* Subrotina GoToCentralRow:
Este mtodo sub-rotina semelhante ao anterior, exceto que temos para testar a posio y rob, e
mov-lo para frente ou de trs do terreno.
- Construir novas rotinas nomeados TurnTowardsGroundRear e TurnTowardsGroundFront.
- Construir nova sub-rotina chamada GoToCentralRow
- Construir o principal do programa:


NB: Voc pode encontrar o programa na pasta de arquivos de tutorial.
- Execute o programa e tente posio do rob inicial diferente ou direo.
Resumo


8



As contagens de rob

Variveis

Expresses numricas

A definio de um valor a uma varivel

Usando variveis em um programa

Resumo

Variveis

Os dados processados por um programa armazenado na memria do computador. Para ter acesso
aos dados, o programador associa uma varivel aos dados.
* O nome da varivel definido pelo programador. Este nome permite que o computador recupere
os dados na sua memria. O nome da varivel como um endereo de dados na memria.

Um nome de varivel pode conter letras e nmeros mas no devem existir espaos e deve comear
com uma letra. O seu comprimento mximo de 32 caracteres. Ele deve ser diferente das expresses
lingusticas rob.

* O valor da varivel o contedo da localizao de memria referenciado pelo nome.
* Em RobotProg, as variveis so definidas para o programa completo (programa principal e todos as
sub-rotinas). Os seus valores so inteiros. Todas as variveis tm o valor 0 quando a execuo do
programa comea.
* Exemplo: neste captulo, vamos contar o nmero de passos dados pelo rob. Vai ser representada
por uma varivel com o nome nsteps.

Expresses numricas

Expresses numricas so frmulas de clculo que podem conter variveis, nmeros, parnteses e
operadores. O resultado do clculo um inteiro.
Exemplo: suponhamos que o valor da chamada nsteps 5, quando a expresso nsteps + 3
executada. O resultado da expresso ser 8.
Uma expresso numrica tambm pode conter funes numricas predefinidas por meio de palavras-
chave, como DistanceFromWall: esta funo devolve o nmero de azulejos entre o rob e a parede
em frente.
Exemplo: suponhamos que o rob est a quatro azulejos de distncia de uma parede, a expresso 2 *
DistanceFromWall ir devolver o resultado 8.

A definio de um valor a uma varivel

A definio de um valor a uma varivel feita com uma determinada instruo de atribuio tal como:
nome da varivel = numericalExpression.
Exemplo: nsteps = DistanceFromWall. Quando a instruo de atribuio executada, o valor da
expresso calculado, ento este valor armazenado em nome da varivel que aparece esquerda
do sinal =. Num fluxograma, a instruo de atribuio est escrita dentro de um bloco de atribuio.




Um sinal = usado em muitas linguagens de programao para a instruo de atribuio.
Ele tem um significado diferente do sinal = usado em matemtica.
Por exemplo, a instruo nsteps = nsteps + 1 est correta.
Assumindo que o valor de nsteps 5 antes de a instruo ser executada, quando a expresso nsteps
+ 1 calculada, d 6 como resultado, ento este valor armazenado na varivel nsteps: esta
instruo incrementada de um valor da varivel. Ele chamado uma incrementao.

Usando variveis em um programa

. Agora, vamos escrever um programa para encontrar medidas que foram feitas pelo rob.
O rob ir mover-se para uma parede, em seguida, volta-se para se movimentar para outra parede.
O mtodo simples: para cada movimento do rob, que incrementa a varivel nsteps.
- Esta instruo de atribuio est disponvel no nvel 4: assim que se selecionar o nvel 4 ou superior.
- Pode-se utilizar qualquer plataforma.
9

- Abra um novo programa e digite o fluxograma a seguir:


- Execute o programa e clique no boto "Mostrar variveis", de modo que se possa ter acesso
varivel nsteps mudana de valor quando o rob se move.
- Tente executar o programa para diferentes posies iniciais do rob: o programa vai acabar com
diferentes valores de nsteps.

Construir um programa para mover o robot como no programa anterior, mas com um modo diferente
de contar o nmero de etapas, utilizando a palavra-chave DistanceFromWall.
Para a primeira seco, antes de os movimentos do rob: = distncia DistanceFromWall
Para a segunda seco, por sua vez, apenas aps o bloqueio right: =distncia + DistanceFromWall
Resumo





O rob DRAWS




Loops so teis

Desenhando um lado de um quadrado

Desenhar um quadrado

Resumo

Loops so teis
10


* Neste captulo, voc vai fazer o rob desenhe um quadrado com um
lado de cinco azulejos. Para desenhar uma marca em um azulejo, o
rob utiliza a marca de instruo. Aps a marcao de um azulejo, o
rob tem que se mover e girar se necessrio, para marcar a azulejo
seguinte. O nmero de marcas a tirar 16: o rob tem que se mover
e desenhar uma marca 16 vezes e girar quatro vezes em cada canto
quadrado. Assim, o programa ir conter, pelo menos, 36 blocos. Isto
realmente muito, a maioria dos blocos so idnticos porque a mesma
ao que tem de ser repetido vrias vezes. E caso voc queira
desenhar um quadrado maior, voc tem que mudar todo o programa.
Portanto, a soluo a utilizao de ciclos para repetir uma parte do
programa.
Um ciclo representado por um bloco de circuito em que possvel
inserir os blocos a serem repetidas.
* Antes de iniciar a programao:
- Abrir um novo programa e selecione o nvel 5
- O objetivo do programa para desenhar um quadrado, ento voc
pode selecionar o efeito no cabealho da janela do programa
- Mudar o cho: Plataforma select> no menu Modificar, ento
plataforma> Abrir menu, selecione o cho chamado Ground9x9.bog
em arquivos da pasta do tutorial, em seguida, clique no boto Use
esta plataforma

Desenhando um lado de um quadrado

Agora, voc vai escrever uma sub-rotina para desenhar um lado da
praa.
- Escolha> Programao nova sub-rotina.
- D o DrawSide nome sub-rotina
- Construa o fluxograma a seguir:


* O cabealho circuito contm a instruo: Para tile = 1 a 4
- Para e de palavras-chave so obrigatrias nesta Instruo.
- azulejo uma varivel, aqui utilizada como varivel de loop.
- 1 o circuito de valor varivel inicial e 4 o valor final; esses
valores podem ser nmeros ou expresses numricas.
* Execuo de progresso:
- Quando o ciclo executado pela primeira vez, a varivel de loop
definida para o seu valor inicial: aqui, o azulejo definido como 1
- Em seguida, o corpo do ciclo (fluxograma dentro do loop)
executado: Aqui o rob se move frente e desenha uma marca.
- Ento a instruo seguinte executado: provoca a execuo de
continuar no cabealho loop, que para o prximo valor varivel.
11

- Quando o cabealho do ciclo executado pela segunda vez, o valor
da varivel do loop aumentada em 1; aqui a azulejo valor torna-se 2
- Em seguida, o corpo do ciclo executado novamente, ento a
prxima instruo etc ... at que o valor da varivel se torna maior do
que o valor final. Aqui, o ciclo vai terminar quando azulejo tem o valor
5
- Aps o final loop, a execuo continua no bloco seguinte ao bloco do
ciclo.
* Para testar esta sub-rotina, voc pode inserir no programa principal
de um bloco de comear, uma sub-rotina chamar e um bloco de final,
e execut-lo.

Blocos de circuito de extremidade de cabealho e ciclo so
arredondados porque elas se comportam como blocos de incio e fim:.
Eles mostram o incio e o final do grfico de operao a ser repetido
o primeiro bloco executado no corpo do ciclo aquele associado ao
cabealho de loop

Desenhar um quadrado

Para desenhar um quadrado, temos que desenhar um lado, e por sua
vez, este ser repetido 4 vezes. Ento, ns usamos novamente um loop
para desenhar o quadrado.
- Apresentar programa principal e construir o fluxograma a seguir:


- Executar o programa e verificar o rob desenha um quadrado.

Desenhe um retngulo:
os lados do retngulo no so todos de igual comprimento. possvel
alterar a DrawSide subrotina para desenhar um lado cujo
comprimento armazenado em uma varivel antes chamada de
subrotina.
Resumo



O rob joga bola

Como pegar a bola

Como programar a bola

Um rob joga bola

Como programar vrios robs

Basquete jogo

Resumo
12


Como pegar a bola

* Neste captulo, voc vai escrever um programa para fazer o rob encontrar a bola e jog-lo.
Primeiro, necessrio saber como fazer o robot ir a uma azulejo, aquele em que a bola .
(Programao Ball introduzida no prximo pargrafo).
* Ento voc est indo para construir uma sub-rotina chamada GoToTileXY para fazer o rob ir para o
azulejo com coordenadas (x, y). x e y so duas variveis definidas para valores apropriados antes da
chamada de subrotina.
Enquanto o rob no estiver no azulejo x, y, ir mov-lo para x, y. Isto ser feito por meio de uma
outra sub-rotina chamada GoTowardsXY e um ciclo Enquanto.
* Antes de iniciar a programao:
- Abrir um novo programa
- Nvel 5
- Escolha o Ground9x9.bog cho com o menu de plataforma.
* GoTowardsXY subrotina
Se o rob est orientada para x, y move-se uma azulejo frente, de modo a estar mais perto de x, y,
ou ento ele gira em 90 para ser melhor orientado.
- Criar uma sub-rotina de novo com o nome GoTowardsXY
- Construir o seguindo fluxograma:


Condies lgicas para testar a direco rob: dyRobot = 0 e (x-xRobot) * dxRobot> 0: A condio
dyRobot = 0 verdadeira se a direco do rob paralela ao eixo x. Neste caso, a dxRobot valor 1,
se o rob est de frente para a direita do cho e - 1 se est de frente para o lado esquerdo do cho. O
valor de x - xRobot representa o movimento para ser feito ao longo do eixo x, se for o robot positivo
tem de mover para a direita, se for negativo, o robot tem de se mover para a esquerda. Portanto, se
os valores de x - xRobot e dxRobot so ambos positivos ou negativos, o produto destes valores
positivo e o rob est a bom sentido. A condio dxRobot = 0 e (y-yRobot) * dyRobot> 0 permite
testar a direco do rob ao longo do eixo y. Isto pode ser explicado da mesma forma.





- Clique no boto "Verificar fluxograma" para garantir seu fluxograma est correto.
* Subrotina GoToTileXY
13

- Criar uma nova sub-rotina chamada GoToTileXY
- Construa o fluxograma a seguir:


* O bloco de loop While tem a mesma forma que o bloco Para loop. O cabealho contm o ciclo de
instruo Embora comeando com a palavra-chave Enquanto seguida por uma condio lgica (como
no bloco de ensaio)
Se o resultado do estado lgico verdadeiro, o fluxograma para dentro do corpo do ciclo executado,
ento a instruo Wend torna a execuo continue a cabealho do bloco, a condio lgica
novamente avaliada, etc ...
Se o resultado da condio lgica falso, o corpo do ciclo no executado, a execuo continua no
bloco seguinte do loop
* Na sub-rotina GoToTileXY, o corpo do ciclo, que a sub-rotina GoTowardsXY, executado enquanto
a condio xRobot <> x ou yRobot <> y devolve o valor verdadeiro; xRobot <> x uma expresso
lgica comparando os valores de x e xRobot, o resultado verdade se os valores de xRobot e x so
diferentes, a expresso yRobot <> y verdadeiro se yRobot diferente de y, assim, a condio
xRobot <> x ou yRobot <> y verdadeira se o rob no no azulejo x, y.
* Teste de rotina GoToTileXY:
- No programa principal, construir o fluxograma a seguir.
- Execute o programa e verificar o rob no azulejo 2, 7, quando termina a execuo
- Executar novamente o programa com uma posio inicial diferente ou a direo do rob
- Executar novamente o programa para valores diferentes de x e y.



Como programar a bola

* A bola exibida no solo apenas se o programa contm uma palavra-chave relacionada com a bola.
Quando comea a execuo do programa, a bola colocada numa aleatoriamente azulejo branco.
* A palavra-chave Xball e yBall dar a posio da bola no cho.
Por exemplo, voc pode testar se o rob est no azulejo mesmo que a bola com a condio: xRobot =
14

Xball e yRobot = yBall
* Os comandos de Bola: GetBall, DropBall, ThrowBall
Esses comandos devem ser escritos dentro de blocos de comandos editveis:


GetBall: se o rob est a azulejo mesma que a bola, que leva a bola. DropBall: o rob a bola cai sobre
o azulejo que ocupa. ThrowBall: o rob arremessar a bola trs peas em frente. Se a bola vai para fora
da plataforma, ele automaticamente lanada novamente ao acaso em um azulejo branco.

Um rob joga bola

* Antes de comear:
- Escolha Configurao> menu Nvel e selecione o nvel 6, a fim de usar a bola
* Agora voc vai escrever um programa para fazer o rob encontrar a bola e jog-la.
Para encontrar a bola, use duas variveis x e y, defina seus valores como Xball e yBall e executar a
sub-rotina GoToTileXY
- substituir com o programa principal seguindo um:


- Executar o programa e aproveite ...

Como programar vrios robs

* No nvel 6, possvel executar programas de rob vrios ao mesmo tempo no mesmo terreno.
Cada rob associado com uma janela do programa.
Para os nveis abaixo do nvel 6, quando voc abrir ou criar um novo programa, o atual programa
fechado: existe apenas um programa aberto ao mesmo tempo. No nvel 6, quando voc abrir ou criar
um programa, os programas abertos anteriormente permanecem em aberto.
* Os programas abertos so partes do atual projeto. Voc pode ver uma lista dos programas do
projeto, abrindo a janela do projeto com o Window> menu Projeto. Com esta janela, voc pode exibir
ou ocultar ou remover programas. No nvel 6, quando voc fecha uma janela do programa, o programa
continua no projeto e ainda ser executado mesmo que no seja exibido. Se voc no quer que o
programa a ser executado voc tem que remov-lo do projeto.
* A nvel 6, possvel fazer os robs jogar juntos. Aqui, os robs vo jogar basquete.
- Escolha Configurao> Escolha um menu do jogo
15

- Selecione jogo de basket-ball
- Clique no boto Clique para ver as regras
-Clique em OK para escolher o jogo selecionado
Voc pode verificar que a finalidade do programa agora "Jogar a bola na cesta": este o objetivo do
jogo, que no pode ser alterada durante um jogo selecionado. A plataforma no pode ser modificada
durante um jogo. Voc pode ver o cho do jogo, exibindo a janela de execuo. A cesta a azulejo
central, a sua cercado por paredes.

Jogo de Basquete

* Execute o programa anterior
- Ns temos um problema! Em alguns casos, as falhas de rob contra uma parede no centro do solo,
necessrio alterar o GoTowardsXY subrotina que no estava a cuidar de paredes em frente do rob.
- Mudar GoTowardsXY subrotina: substituir o bloco MoveForward por um teste que permite o rob a
fim de evitar uma parede em frente.



- Executar o programa: ela melhor, o rob no bater contra paredes, mas ainda h um problema: ele
lana a bola em qualquer lugar do cho!
* Para marcar um ponto, o rob tem que jogar a bola na cesta. Quando se joga a bola, a bola vai para
trs azulejos frente, por isso antes de jogar a bola, o rob tem que ir para uma posio de trs peas
longe da cesta, por exemplo, para a azulejo 2,5, ento ele tem de transformar-se em direo da cesta.
- alterar o programa principal:
16




- Executar o programa, agora o rob ganha pontos....

* Jogo Cesta com vrios robs:
- Para ter dois robs tocando juntos, voc pode salvar o seu programa e, em seguida, duplicar o
arquivo e abra o arquivo duplicado.
- Quando voc executar o jogo, voc pode encontrar problemas adicionais, como os robs podem
falhar um contra o outro. Ento voc tem que verificar se um outro est frente com a palavra-chave
TileAheadOccupied- Outro problema que, quando um rob segura a bola, as coordenadas da bola
variam quando o rob se move. Ento voc tem que modificar a parte do programa onde o rob
encontra a bola.
Resumo