Projeto 8 - Ping Pong

Neste projeto, vamos desenvolver um jogo de ping pong em que o objetivo é não deixar a bolinha cair, obtendo o máximo de pontos movimentando a plataforma, para tentar controlar a bola com colisões e rebotes.

A mecânica do jogo é muito simples, temos uma plataforma retangular que deverá ser movida para a direita e para a esquerda para não deixar a bola cair, os comandos para movimentar a plataforma já foram utilizados em diversos projetos. O aspecto mais complexo do projeto é entender como funcionam as colisões na borda e na plataforma e utilizar o bloco Gire para que elas se comportem do jeito certo.

Imagem Projeto 8
Baixar Jogo (Ping Pong)

Blocos Utilizados

Código da Plataforma

O Ator Plataforma

Começaremos com o código que controla o movimento do ator Plataforma. Temos 2 blocos Quando Receber que serão acionados por blocos Transmita que serão criados nos Atores Setas. Portanto, quando o ator receber “esquerda”, irá se mover para esquerda e quando receber “direita” irá se mover para a direita.

Além disso, para que ele não consiga sair da tela, faremos com que ele seja movido para a direita caso encoste na borda esquerda e ser movido para esquerda caso encoste na borda direita. Junto a isso, teremos um bloco Quando Play para definir o tamanho inicial da plataforma e mover ela para o centro da tela na altura certa, além de iniciar a variável "pontos".

Código das Setas

Os Atores Setas

O código das setas será basicamente igual, utilizando um bloco Transmita para fazer a flor se movimentar, portanto utilizaremos dois blocos Quando Tocar junto de blocos Transmita com os blocos da seta esquerda transmitindo "esquerda" e os da direita transmitindo "direita". Já para definir o tamanho e posição inicial dos atores, utilizaremos um bloco Quando Play juntamente de um bloco Defina Tamanho e o bloco Vá Para.

Código da Bola

O Ator Bola

Começaremos com o código das informações iniciais do ator, utilizando um bloco Quando Play junto de um bloco Defina Tamanho e um bloco Gire com parâmetro aleatório, para que a bola comece em uma direção aleatória no começo do jogo. Em seguida, temos um bloco Sempre para mover a bola na direção em que ela se encontra no momento.

A ideia é que o jogador perde se a bola encostar na borda de baixo, logo usaremos um bloco Quando Encostar na borda debaixo e o bloco Pare tudo.

Agora iremos fazer o código das colisões da bola, ou seja, o código que determina como a bola vai se comportar ao encostar na borda de cima, nas bordas laterais e no ator Plataforma.

Começando com a borda de cima, temos que a bola terá que girar "180 - 2 x Seu angulo atual" graus no sentido horário. Para isso, vamos utilizar, dentro do bloco Quando Encostar na borda de cima, um bloco Gire no sentido horário juntamente com dois blocos Operação, um que faz 180 menos algo e outro que faz 2 vezes um bloco Informação de direção atual da bola.

Já a colisão das bordas laterais terá que girar a bola em "2 x angulo atual" graus no sentido anti horário, (mesma coisa que girar -2 x angulo atual no sentido horário). Então para padronizar o sentido iremos fazer a mesma coisa que fizemos antes, porém com um 0 no lugar do 180. Para a colisão com o ator Plataforma, iremos utilizar a mesma fórmula que usamos para a borda de cima, porém, para o jogo não ficar muito previsível, usaremos um bloco somando ao ângulo uma quantia pequena aleatória, e depois de encostar no ator Plataforma usaremos o bloco Mude Variável aumentando a variável "pontos" em 1.

Para o Futuro