Aula 7: Resposta dos desafios

DESAFIO 1 (fácil): alterando a velocidade.

Leia o código abaixo e tente imaginar o que irá aparecer na tela. E o que significam os valores 10, 100 e 12?

import Playground exposing (..)

main =
  animation view

view time =
  [ circle blue (wave 10 100 12 time)
  ]

Agora altere o código acima para que o círculo pulse 4 vezes mais rápido.
Em seguida, altere-o para que pulse 4 vezes mais lento que o código original.

Resposta

A parte do código 12 time é que define qual será a velocidade da animação. Lembre-se: quanto menor o valor, mais rápida será a animação.
Isso acontece pois este valor indica a quantidade de segundos que queremos que demore a animação completa. Quanto menor o tempo total da animação, mais rápida ela irá ser exibida.

Para que a animação ocorra 4 vezes mais rápido, basta dividirmos o valor 12 time por 4:

import Playground exposing (..)

main =
  animation view

view time =
  [ circle blue (wave 10 100 3 time)
  ]

Para que seja 4 vezes mais devagar, multiplicamos o valor original por 4:

import Playground exposing (..)

main =
  animation view

view time =
  [ circle blue (wave 10 100 48 time)
  ]

Agora nossa animação vai ficar beeeeem devagar, demorando 48 segundos para que termine o ciclo todo.

DESAFIO 2 (fácil): Adicione um círculo dentro do outro.

Inclua no código acima um novo círculo vermelho que fique estático/parado. Este novo círculo deve ficar sob o círculo azul e deve ter um diâmetro igual a 200.

Resposta

Desta vez bastava adicionarmos um círculo vermelho na lista de figuras:

import Playground exposing (..)

main =
  animation view

view time =
  [ circle red 200
    , circle blue (wave 20 100 10 time)
  ]

DESAFIO 2 (Intermediário): Crie 2 círculos pulsando.

import Playground exposing (..)

main =
  animation view

view time =
  [ circle blue (wave 20 80 2 time)
  ]

Altere o código acima para atender os seguintes critérios:

  • Mova o circulo para a esquerda em 200 unidades.
  • Crie um novo círculo azul com a mesma ondulação deste e o mova para direita em 200 unidades.

O resultado final esperado são dois círculos pulsando no mesmo ritmo, um ao lado do outro. Talvez dê para imaginarmos isso como sendo a animação de dois olhos piscando?

Resposta

import Playground exposing (..)

main =
  animation view

view time =
  [ circle blue (wave 20 80 2 time)
      |> move -200 0
    , circle blue (wave 20 80 2 time)
      |> move 200 0
  ]

DESAFIO 3 (Avançado): Crie um triângulo entre os círculos.

Complemente o código do desafio 2 e crie um triângulo amarelo estático/parado entre os dois círculos.

Se imaginarmos que os círculos são 2 olhos, o triânulo seria como se fosse um nariz! Ele deve obedecer as seguintes regras:

  • Deve ser na cor amarela.
  • Deve ter um diâmetro igual a 50.
  • Deve ficar 75 unidades para baixo no eixo vertical (eixo y) em relação ao centro e bem no meio (0 unidades) no eixo vertical.
  • Deve ficar rotacionado de forma que a parte de cima seja plana e a parte de baixo forme um ângulo.

O resultado final esperado são dois círculos pulsando no mesmo ritmo, um ao lado do outro e um triângulo amarelo simulando um nariz. Ou talvez o bico de um pássado! Use sua imaginação :)

Resposta

import Playground exposing (..)

main =
  animation view

view time =
  [ circle blue (wave 20 80 2 time)
      |> move -200 0
    , circle blue (wave 20 80 2 time)
      |> move 200 0
    , triangle yellow 50
      |> move 0 -100
      |> rotate 180
  ]

DESAFIO 4 (Avançado/livre): Desenhe a figura de uma animal.

Ao longo das aulas aprendemos como desenhar triângulos, círculos, retângulos e quadrados. Aprendemos também como rotacioná-los, posicioná-los na tela e hoje aprendemos nossa primeira forma de animação: movimento de ondulação (wave).

Use este conhecimento todo que você adquiriu até o momento e tente desenhar a figura de um animal qualquer na tela.

Se estiver sem inspiração, você pode tentar: desenha um pássaro, um macaco, um cachorro, um gato... não se preocupe em deixar o desenho perfeito. O importante é treinar!

Resposta

Este era um desafio livre e, portanto, não tem respostas certas ou erradas :)

E agora?

Siga para a Aula 8 e bons estudos!