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]