Outra animação. Dessa vez temos uma
bola se movendo pela tela,
e vocês sabem com isso é feito.
Temos uma variável, "x" que nos diz
a posição da bola,
a variável "speed" que nos diz a distância
que a bola percorre cada vez.
E o loop onde é redesenhado
o fundo toda vez,
preenchendo as cores e desenhando uma
elipse a partir da posição x, e toda vez,
mudamos "x" para ter o antigo valor de "x"
mais o valor da variável "speed".
Então se deixarmos "speed" menor,
e reiniciarmos
veja que a bola se move mais devagar.
Ou posso deixar o valor negativo, e se
moverá ao contrário, ou deixar como zero
e bola deve parar de mover.
Mas enquanto a velocidade
for maior que zero,
eventualmente a bola irá
se mover pela tela.
Sempre posso apertar o botão reiniciar
para trazê-la de volta,
mas você sabe, depois de um tempo,
isso fica chato.
Você reinicia e reinicia...
E se fizermos assim: Quando a bola
atingir o lado direito da tela
em vez de ir para fora da tela como agora,
eu quero que ela volte.
Para fazer a bola voltar, é só dizer que a
variável "speed" será menos cinco.
Se eu deixar a velocidade negativa,
então ela fará o caminho contrário.
Mas ai está o problema.
Eu só quero mudar a velocidade se
a bola tiver atingido a lado direto.
Acho que já disse isso. Só quero mudar a
velocidade SE ela chegar do lado direito.
Eu acho que isso pede o uso
da condicional "if".
Até agora, apenas demos ao computador
comandos para correr, e mais nada.
Declarações "if" é como dizer:
"Ei cara, quero que você
execute esse código,
mas somente sob circunstâncias
específicas."
"Então mude a velocidade da bola só se ela
chegar do lado direito".
E aqui está como deve ficar.
O que você precisa fazer é digitar "if" e
um par de parênteses e de colchetes.
Dentro do parêntese
colocaremos a condição.
E dentro dos colchetes colocaremos
o código a ser executado.
Assim, o modo como funciona é:
"Se essa condição for verdadeira
execute esse código.
Se não for, não incomode."
No nosso caso, a condição é a
bola atingir o lado direito da tela.
Como sabemos se a bola
atingiu o lado direito?
Temos a variável "x" que nos diz
onde a bola está,
e sei que o limite da tela é a
posição 400, então vejamos.
Quando "x" for maior que 400, então
sabemos que a bola passou do lado direito.
Vejamos como isso funciona
No código a ser executado, como já falei
estamos apenas mudando a velocidade.
A velocidade será menos cinco.
Vamos apertar reiniciar
e ver o que acontece.
Dessa vez, quando a bola atingir
o limite do lado direito, ela volta!
E fica indo pra fora da tela.
Mas podemos fazer o mesmo
do outro lado.
Dessa vez, verificaremos se ela
atingiu o limite esquerdo.
Isso é, quando "x" for menor que zero,
e deixarmos a velocidade positiva de novo.
Vou reiniciar.
E dessa vez...
Funciona.
Sei que estamos verificando se a bola
ultrapassou as bordas da tela,
mas parece que passou um
pouco das bordas.
Lembrando que esses 2 parâmetros controlam
onde o centro da elipse está desenhada.
Agora, quando o centro atingir a borda,
metade da elipse terá passado do limite.
Se queremos corrigir isso, vamos
parar a elipse um pouco antes.
Se o nosso limite é 400, queremos parar
a elipse quando chegar aqui,
e podemos na chamada dessa função
dizer que a elipse tem uma largura de 50,
isso significa que do centro
até a borda, será de 25.
Então queremos pará-la quando o centro
atingir 375, porque é 400 menos 25.
Então ao invés de checar se "x" é maior
que 400, verificamos se é maior que 375.
Invés de checar se "x" é menor que zero,
vou verificar se é menor que 25.
E agora está perfeito!
Veja a bola quicando.
Legendado por [Valter Bigeli].
Revisado por [Fernando dos Reis]