Projeto 9 - Mire e Atire
Neste projeto, vamos desenvolver um jogo em que o objetivo é atirar em um fogo móvel com uma pistola de água, arrumando sua inclinação com as setas e completando as fases com o mínimo de tiros. Construiremos uma versão composta por 5 atores, a arma, os dois atores setas, o fogo e a água. Uma novidade deste projeto é que iremos utilizar alguns blocos para duas finalidades novas: permitir que o próximo tiro saia somente quando o primeiro tiver cruzado toda a tela, e criar um limite para a inclinação da arma.
Blocos Utilizados
O Ator Arma
Começaremos com as informações iniciais da arma com o bloco Quando Play junto do Defina Tamanho e Vá Para, além de definir a variável "direção arma" como sendo a direção atual do ator Arma, visto que vamos precisar dessa informação nos atores Seta, mas ela não precisa aparecer na tela, então vamos escondê-la.
Para a movimentação do ator, vamos usar o bloco Transmita nos atores seta, e o bloco Quando Receber para cima e para baixo, de modo que iremos girar a arma no sentido horário e anti-horário e atualizar a nossa variável "direção arma", com um Transmita "atualizar direção" e um Quando Receber definir a variável como a nova direção.
Ainda utilizaremos outra variável, que será definida em outro ator, que é a variável "pode atirar" que terá valor sempre igual a 1 ou 0. Quando clicarmos na arma, ela verifica se podemos atirar com o bloco Se e então transmite "disparar" para todos os atores.
Os Atores Setas
O código das duas setas será basicamente igual, utilizando um bloco Transmita para fazer a arma girar. Com um detalhe novo: criaremos aqui os limites para a inclinação da arma com o bloco Se, que fará a arma se movimentar para cima somente se a direção dela é menor que 180 graus e para baixo apenas se for maior que 0 graus.
Iremos definir também as informações iniciais das setas com os blocos Quando Play, Defina Tamanho e Vá Para.
O Ator Água
Em relação ao ator Água, temos que sua inclinação terá que ser a mesma do ator arma, visto que o "tiro" sai na direção para a qual a arma está apontada, então para mexer na inclinação do ator água, iremos utilizar os blocos Quando Receber para baixo e para cima juntamente com os blocos Gire.
Já para as informações iniciais do ator, usaremos os blocos Defina Tamanho e Vá Para, e definiremos as variáveis "tiros" e "pode atirar" que já usamos no ator arma. Além disso temos um bloco Gire 180 graus para ajustar a direção inicial da arma com a da gota.
Agora em relação ao ato de disparar, iremos utilizar o bloco Quando Receber disparar, que é ativado quando tocamos na arma. Logo após o disparo, iremos definir a variável "pode atirar" como 0, aumentar a quantidade de tiros em 1, mostrar a água e fazer ela avançar na direção para a qual está apontada com o bloco Avance. Precisamos então identificar quando um tiro acerta ou não o fogo. Quando o tiro não acerta o fogo ele irá acertar uma das bordas, então em um bloco Quando na Borda iremos esconder a água e levar ela de volta para a posição inicial com o bloco Vá Para e definir a variável "pode atirar" como 1 novamente. Já quando a água encostar no ator fogo, iremos transmitir "tocou" para usarmos ele no ator fogo e esconder a água, levando ela para a posição inicial e transmitindo "mudar velocidade".
O Ator Fogo
A movimentação do fogo será dividida em fases, ou seja, a cada vez que o fogo for acertado ele irá mudar o seu comportamento, deixando mais difícil. Então iremos fazer com que o fogo comece somente indo para baixo, logo usaremos dentro de um bloco Sempre um bloco Mova para baixo, definindo também em qual "fase" estamos do movimento do fogo variável que definimos como "velocidade". Agora vamos fazer dois blocos, um bloco Quando Receber tocou, que terá o papel de parar o movimento da fase antiga, e o bloco Quando Receber mudar velocidade, que irá dar início ao movimento da próxima fase.
O primeiro bloco irá esconder o fogo quando for acertado, mudar a "fase" aumentando a velocidade em 1 e utilizando o bloco Pare outros blocos, que interrompe os códigos somente deste ator. Já o segundo bloco será uma série de blocos Se que verificam em qual velocidade estamos e faz o fogo se comportar daquela maneira. No nosso exemplo, na fase 2 o bloco aumenta a velocidade e se movimenta na diagonal. Na fase 3 aumenta a velocidade mais uma vez e o movimento se torna aleatório, sendo possível também o fogo pular e "desviar" da água. Agora, a partir da velocidade 4 o jogo acaba com o bloco Toque o Som e o bloco Pare tudo, mas podendo adicionar novas velocidades.
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 uma munição limitada, em que o jogo acaba quando ela acabar.
- Faça um sistema que conta o tempo que você demorou para terminar o jogo.
- Faça obstaculos que passam entre a arma e o fogo.