0:00:00.437,0:00:04.760 Outra animação. Dessa vez temos uma [br]bola se movendo pela tela, 0:00:04.760,0:00:06.542 e vocês sabem com isso é feito. 0:00:06.542,0:00:09.714 Temos uma variável, "x" que nos diz [br]a posição da bola, 0:00:09.714,0:00:14.126 a variável "speed" que nos diz a distância[br]que a bola percorre cada vez. 0:00:14.126,0:00:16.414 E o loop onde é redesenhado [br]o fundo toda vez, 0:00:16.414,0:00:20.713 preenchendo as cores e desenhando uma[br]elipse a partir da posição x, e toda vez, 0:00:20.713,0:00:24.882 mudamos "x" para ter o antigo valor de "x"[br]mais o valor da variável "speed". 0:00:24.882,0:00:28.814 Então se deixarmos "speed" menor, [br]e reiniciarmos 0:00:28.814,0:00:31.079 veja que a bola se move mais devagar. 0:00:31.079,0:00:36.324 Ou posso deixar o valor negativo, e se[br]moverá ao contrário, ou deixar como zero 0:00:36.324,0:00:38.210 e bola deve parar de mover. 0:00:38.210,0:00:40.481 Mas enquanto a velocidade[br]for maior que zero, 0:00:40.481,0:00:43.047 eventualmente a bola irá[br]se mover pela tela. 0:00:43.047,0:00:46.043 Sempre posso apertar o botão reiniciar [br]para trazê-la de volta, 0:00:46.043,0:00:49.090 mas você sabe, depois de um tempo, [br]isso fica chato. 0:00:49.090,0:00:52.677 Você reinicia e reinicia... 0:00:52.677,0:00:55.738 E se fizermos assim: Quando a bola[br]atingir o lado direito da tela 0:00:55.738,0:01:00.540 em vez de ir para fora da tela como agora,[br]eu quero que ela volte. 0:01:00.540,0:01:06.512 Para fazer a bola voltar, é só dizer que a[br]variável "speed" será menos cinco. 0:01:06.512,0:01:10.085 Se eu deixar a velocidade negativa,[br]então ela fará o caminho contrário. 0:01:10.085,0:01:11.568 Mas ai está o problema. 0:01:11.568,0:01:16.693 Eu só quero mudar a velocidade se[br]a bola tiver atingido a lado direto. 0:01:16.693,0:01:25.019 Acho que já disse isso. Só quero mudar a[br]velocidade SE ela chegar do lado direito. 0:01:25.019,0:01:27.483 Eu acho que isso pede o uso[br]da condicional "if". 0:01:27.483,0:01:31.497 Até agora, apenas demos ao computador[br]comandos para correr, e mais nada. 0:01:31.497,0:01:32.941 Declarações "if" é como dizer: 0:01:32.941,0:01:36.135 "Ei cara, quero que você [br]execute esse código, 0:01:36.135,0:01:38.679 mas somente sob circunstâncias [br]específicas." 0:01:38.679,0:01:42.524 "Então mude a velocidade da bola só se ela[br]chegar do lado direito". 0:01:42.524,0:01:44.688 E aqui está como deve ficar. 0:01:44.688,0:01:50.947 O que você precisa fazer é digitar "if" e[br]um par de parênteses e de colchetes. 0:01:50.947,0:01:54.343 Dentro do parêntese[br]colocaremos a condição. 0:01:54.343,0:01:57.233 E dentro dos colchetes colocaremos[br]o código a ser executado. 0:01:57.233,0:02:01.553 Assim, o modo como funciona é:[br]"Se essa condição for verdadeira 0:02:01.553,0:02:03.919 execute esse código.[br]Se não for, não incomode." 0:02:03.919,0:02:07.255 No nosso caso, a condição é a [br]bola atingir o lado direito da tela. 0:02:07.255,0:02:09.851 Como sabemos se a bola[br]atingiu o lado direito? 0:02:09.851,0:02:12.967 Temos a variável "x" que nos diz[br]onde a bola está, 0:02:12.967,0:02:22.584 e sei que o limite da tela é a[br]posição 400, então vejamos. 0:02:22.584,0:02:29.839 Quando "x" for maior que 400, então[br]sabemos que a bola passou do lado direito. 0:02:29.839,0:02:31.096 Vejamos como isso funciona 0:02:31.096,0:02:34.733 No código a ser executado, como já falei[br]estamos apenas mudando a velocidade. 0:02:34.733,0:02:38.271 A velocidade será menos cinco. 0:02:38.271,0:02:41.669 Vamos apertar reiniciar [br]e ver o que acontece. 0:02:41.669,0:02:45.845 Dessa vez, quando a bola atingir [br]o limite do lado direito, ela volta! 0:02:45.845,0:02:47.259 E fica indo pra fora da tela. 0:02:47.259,0:02:49.253 Mas podemos fazer o mesmo[br]do outro lado. 0:02:49.253,0:02:52.668 Dessa vez, verificaremos se ela[br]atingiu o limite esquerdo. 0:02:52.668,0:03:03.047 Isso é, quando "x" for menor que zero,[br]e deixarmos a velocidade positiva de novo. 0:03:04.177,0:03:06.638 Vou reiniciar. 0:03:06.638,0:03:08.155 E dessa vez... 0:03:15.225,0:03:16.578 Funciona. 0:03:16.578,0:03:21.026 Sei que estamos verificando se a bola[br]ultrapassou as bordas da tela, 0:03:21.042,0:03:23.276 mas parece que passou um[br]pouco das bordas. 0:03:23.276,0:03:29.033 Lembrando que esses 2 parâmetros controlam[br]onde o centro da elipse está desenhada. 0:03:29.033,0:03:35.267 Agora, quando o centro atingir a borda, [br]metade da elipse terá passado do limite. 0:03:35.267,0:03:39.271 Se queremos corrigir isso, vamos [br]parar a elipse um pouco antes. 0:03:39.271,0:03:44.607 Se o nosso limite é 400, queremos parar[br]a elipse quando chegar aqui, 0:03:44.607,0:03:51.294 e podemos na chamada dessa função[br]dizer que a elipse tem uma largura de 50, 0:03:51.294,0:03:57.341 isso significa que do centro [br]até a borda, será de 25. 0:03:57.341,0:04:05.099 Então queremos pará-la quando o centro[br]atingir 375, porque é 400 menos 25. 0:04:05.099,0:04:10.168 Então ao invés de checar se "x" é maior [br]que 400, verificamos se é maior que 375. 0:04:10.168,0:04:14.810 Invés de checar se "x" é menor que zero,[br]vou verificar se é menor que 25. 0:04:16.970,0:04:20.728 E agora está perfeito![br]Veja a bola quicando. 0:04:20.728,0:04:23.000 Legendado por [Valter Bigeli].[br]Revisado por [Fernando dos Reis]