Sitemap
MAMI-2020

Um portfólio que descreve minha experiência de matemática aplicada à multimídia.

PONG

3 min readFeb 5, 2021

--

Press enter or click to view image in full size

Aqui eu vou falar sobre a experiência de tentar fazer um jogo de Pong em Processing(). Avisando logo que usei apenas comandos simples, sem Programação Orientada a Objeto.

Para fazer um jogo mecanicamente simples como esse, precisamos lembrar de três passos: interagir, colidir e, no caso do Pong, oscilar. O jogador irá INTERAGIR com o bastão, enquanto o bastão deve colidir com a bola. Já a bola deve oscilar após as colisões.

I. Interação

Basicamente usei o comando KeyPressed, que determina que, enquanto tecla X for pressionada, determinados parâmetros são devolvidos pelo programa.
Nesse caso eu defini que ao pressionar o botão direcional UP e o botão DOWN, o bastão ganharia um valor de movimento a partir de seu eixo Y. Ou seja: o bastão ganharia ou perderia 10 de movimento vertical, que é o que necessitamos para movê-lo em relação a bola.

Outra parte relevante é definir que o bastão não passe do final da nossa tela (600x600) nem ultrapasse o começo dela. Além disso, devo salientar que espeifiquei que quando a bola conseguisse ultrapassar a tela (bolaX>570), o bastão necessariamente não consegueria mais incrementar seu movimento.

II. Oscilação da bola

Basicamente, defini um movimento horizontal e vertical para a bola de modo que, assim como o bastão, ela não ultrapasse a tela mas seja rebatida por ela. Nesse caso, se a bola não colidir com o bastão. ela consegue ultrapassar apenas o lado horizontal direito da tela, que determina a condição de DERROTA do jogo.

III. Colisão e Game Flow

Primeiro fiz uma função de Game Over e outra de placar.
O placar() é chamado na função Draw() e se refere a quantidades de vezes que o bastão acerta a bola. Sua variável de contagem int px é incremetada durante a função jogo toda vez que bastão e bola colidem. (px=+px+1)

Get Rebeca Haddad’s stories in your inbox

Join Medium for free to get updates from this writer.

O GameOver() é chamado toda vez que a bola consegue ultrapassar a tela, ou seja: o jogador não consegue acertá-la.

O jogo () define basicamente tudo, desde a contagem de pontos como a definição da condição de derrota e a colisão da bola com o bastão. Ah, eu incrementei -2 ao rebate para a bola ficar sensivelmente mais veloz e a dificuldade ir aumentando.

Ao final é só invocar o draw() com algumas das funções criadas:

E EIS O RESULTADO :D

E aqui vai o código caso você queira testá-lo:

--

--

MAMI-2020
MAMI-2020