Projeto 6 - Flappy Bird
Neste projeto, vamos desenvolver um jogo em que o ator principal, o Pássaro, esta sempre “caindo” e se movimenta para cima, como se estivesse voando, quando tocamos na tela, o ator deve esquivar das nuvens e coletar as maçãs para marcar pontos.
A mecânica do jogo é parecida com o último projeto, que consiste em pegar o máximo de pontos possíveis coletando as maçãs, porém a movimentação do ator principal é algo completamente diferente, visto que o mesmo se movimenta verticalmente e está sempre sofrendo ação da “gravidade”.
A versão que vamos construir é composta por 4 atores, o pássaro, a maçã, e dois atores nuvens (a alta e a baixa). Veremos que o código dos atores nuvens será algo que pode ser alterado para que o jogo fique mais fácil ou mais difícil e veremos também que é possível utilizar a posição de um ator para definir a posição do outro. Neste projeto aprenderemos a usar novas funções, os blocos Defina Tamanho, Informação e Operação.
Do ponto de vista de programação, o bloco Defina Tamanho será necessário, visto que este projeto precisa ser mais preciso, por isso, utilizaremos o bloco para padronizar um tamanho. Já o bloco Informação é muito útil, pois nos permite obter dados importantes de cada ator, como posição X e Y, tamanho e direção, Por fim, o bloco Operação nos permite fazer operações matemáticas básicas como: adição, subtração, divisão e multiplicação.
Blocos Utilizados
O Ator Pássaro
Começaremos com o código que controla o movimento do ator Pássaro, composto pelos dois primeiros blocos da imagem, um bloco Quando Play seguido do bloco Defina Tamanho para 40%, visto que é um tamanho bom para esse ator conseguir passar entre as nuvens, seguido também de um bloco Sempre que, com o bloco Mova 50 para baixo, fará o papel de “gravidade”. Agora, para o ator se movimentar para cima, colocaremos um bloco Quando Tocar na tela, acompanhado do bloco Mova 50 para cima, simulando o voo do pássaro.
Usaremos também um recurso novo, impediremos que o ator saia pelas bordas da tela. Para fazer isso usaremos um bloco Quando na Borda na borda de baixo, seguido de um bloco Mova 5 para cima (velocidade “raio”) e faremos o oposto com a borda de cima, um bloco Mova 20 para baixo (velocidade “raio”). Esses comandos “empurram” o ator de volta, impedindo que ele saia da tela.
Agora, para encerrar o jogo, criaremos dois blocos Quando Encostar, um deles será quando o ator Pássaro encostar no ator Nuvem de cima e o outro será para quando o ator Pássaro encostar no ator Nuvem de baixo, os dois serão seguidos de um bloco Pare tudo, A posição inicial deste ator será na parte esquerda da tela para que tenhamos tempo de reagir ao movimento das nuvens, que vão se deslocar da direita para a esquerda.
Os Atores Nuvem
O código dos Atores Nuvem será bem parecido, uma das únicas diferenças é que usaremos a posição da nuvem alta para posicionar a nuvem baixa, para isso iremos precisaremos criar uma variável para armazenar a posição y da nuvem alta, utilizando um bloco Quando Play e o bloco Mostre Variável desligado, com a variável “Posição y nuvem” (definiremos o valor dessa variável na segunda parte dos comandos). Definiremos então o tamanho da nuvem para Defina Tamanho 50% e a posição inicial com o bloco Vá Para x:285; y:160 e, para movimentar a nuvem horizontalmente, utilizaremos um bloco Sempre seguido de um bloco Mova 50 para a esquerda.
Para a segunda parte, utilizaremos o bloco Quando na Borda esquerda, a nuvem esconderá com o bloco Esconder, depois um bloco Vá Para X:285 e um Y: Aleatório entre 120 e 160 (basta arrastar o bloco ciano Aleatório para a coordenada Y). Após isso, salvaremos a posição da nuvem na variável “posição y nuvem” com o bloco Defina Variável utilizando o novo bloco ciano Informação selecionado “em posição y”.
Para a segunda nuvem, a primeira parte do código será o mesmo, só não precisamos definir a variável e a coordenada inicial Y terá valor 35. Já na segunda parte, dentro do bloco Quando na Borda esquerda, esconderemos a nuvem baixa e ela irá para X:285 e Y: “posição y nuvem” – 120, utilizando o bloco de Operação , seguido de um bloco Mostre . O número 120 é a distância entre as nuvens que pode ser maior ou menor, para mudar a dificuldade do acordo com o desejado.
O Ator Maçã
No ator Maçã, iniciaremos a variável pontos, que contará quantas maçãs o ator Pássaro pegou, colocando um bloco Quando Play e definindo a variável pontos como 0 com o bloco Defina Variável, acompanhado do bloco Defina Tamanho 30% e a posição inicial sendo Vá Para x:285 y:100. Em relação à movimentação da Maçã, colocaremos um bloco Sempre seguido do bloco Mova 50 para a esquerda.
Agora teremos que fazer dois casos de movimento, caso o jogador consiga pegar a maçã e pontue, ou caso não consiga pegá-la. No caso em que o jogador não pega a maçã, teremos um bloco Quando na Borda esquerda a maçã esconderá, depois Vá Para X:285 e um Y que está na metade entre as duas nuvens, ou seja, a posição guardada menos 120/2, então “posição y nuvem” – 60. Já o segundo caso, que ocorrerá somente quando o pássaro encosta na maçã, colocaremos dentro de um bloco Quando Encostar, um bloco Mude Variável pontos para +1, depois esconderemos a maçã e mandaremos para a mesma coordenada do movimento acima, porém, temos nesse segundo movimento um bloco Espere que deve conter o tempo necessário para que a nuvem consiga encostar na borda e os 3 surgirem juntos (que irá variar de projeto para projeto e de celular para celular).
Para o Futuro
- Implemente sons quando o ator colidir ou pontuar. (Toque o Som)
- Faça que a pontuação seja mostrada na tela ao final do jogo. (Diga)
- Faça mais atores para o Pássaro coletar ou desviar.
- Experimente diferentes dificuldades alterando a distância entre as nuvens.