Mecânicas e jogabilidade:
O jogo possui dois modos de jogo, individual e de dois jogadores, que pode ser alternado por um switch na tela.
→Bola:
Quando é iniciado, uma bola, que é uma luz de LED, adquire uma velocidade inicial fixa e viaja de um lado da tela para outro.
→Pás:
Os jogadores precisam antecipar onde a bola irá parar e selecionar um dos três slots disponíveis conforme a sua escolha, que são posições predefinidas das "pás" do jogo, com o objetivo de aparar a bola e retornar ao seu adversário.
→Pontuação:
Se um dos jogadores escolher errado a posição da pá, a bola passa e conta pontuação para o adversário. Caso escolha certo, é retornada ao adversário.
→Condições de Vitória:
O jogo continua até que um dos jogadores alcance 10 pontos ou o quando timer parar. Nesse último caso, ganha o jogador que tiver feito a maior pontuação.
→Término do jogo:
Quando o jogo termina, as pontuações, o timer e a posição da bola são reiniciados.
Recriação:
Pelas limitações técnicas da época, Blip é um jogo simples e os movimentos da bola são relativamente fáceis de prever. As técnicas usadas no jogo original para simular colisão da bola e a movimentação limitada das pás o deixa entendiante rapidamente. Dessa forma, a minha versão aproxima o jogo mais do Pong da Atari para torná-lo mais interessante, mas mantendo as características e regras do Blip.
Modelo Natural:
O modelo natural consiste em duas pás, representando os dois jogadores, a bola, que é utilizada para marcar a pontuação, os marcadores de tempo, cronômetro e a tela de game over.
Componentes
HUD
Controles:
Jogador 1:
W: Movimenta a pá para cima
S: Movimenta a pá para baixo
Jogador 2:
↑: Movimenta a pá para cima
↓: Movimenta a pá para baixo
Assim como jogos similares, tais como o Pong, faz-se um paralelo com o tênis de mesa: as pás são as raquetes físicas dos jogadores mas, ao contrário deste, assume-se que a bola sempre irá passar por cima da rede, ou que não exista rede interpondo os dois jogadores. Além disso, no tênis de mesa não há colisão lateral com a bola.

Componentes do Tênis
Também é similar aos aero-hóqueis ou air game de fliperama. Neles também há a colisão lateral, mas a área de colisão é estendida às laterais das extremidades, sendo a parte central o "gol".
Componentes de aero-hóquei
Modelo Matemático:
Para medidas espaciais
1 unidade = 1 pixel
X(pá direita) = 40
X(pá esquerda) = X-40
Y(ambas pás) = Y/2 = -250
vel (pás) = 5 px/fr
velX (bola) = 8 px/fr
velY (bola) = 8 px/fr
Caso a bola ricocheteie nas paredes ou nas pás:
velX (bola) = -(velX (bola)) (horizontalmente)
velY (bola) = -(velY (bola)) (verticalmente)
Caso um jogador marque um ponto:
ponto(jogador) = ponto(jogador) + 1
Se o jogo acabar (para cada frame):
tempo = tempo + 0
Reinício:
tempo = 0
tempo = tempo + 0,01666...
Modelo Computacional:
Tipos de Funções:
Criação de objetos - As mais simples, são de grande ajuda para desenhar os componentes do jogos na tela e estabelecer seus parâmetros.
desenhaBola(): Cria a bola seguindo os parâmetros de diâmetro e posicionamento.
desenhaPa(): Cria as pás seguindo os parâmetros de largura, altura e posicionamento.
Movimentação - Funções que incrementam ou decrementam os valores iniciais dos objetos que se movem na tela.
movePa(): Acresce ou decresce o valor da velocidade da pá aos seus respectivos valores verticais.
moveBola(): Acresce os valores da velocidades X e Y da bola ao seus respectivos valores de posicionamento.
Colisão - Funções que limitam o espaço de atuação e/ou modificam a velocidade da bola.
limitaPa(): Limita a posição das pás para que elas não saiam da tela.
contatoPa(): Ao entrar em contato com a pá, a variável de velocidade da bola torna-se negativa.
colisao(): Assim como a última, quando alcança a altura máxima da tela, a velocidade Y da bola se torna negativa, o que acontece respectivamente com a velocidade X, se alcançar a largura máxima.
Caso não haja a colisão nas bordas, e o X máximo seja ultrapassado, será contabilizado 1 ponto para o jogador que marcou,
Condição de Vitória - Função que valida as possíveis vitórias.
gameOver(): Encerra o jogo, caso as condições estabelecidas sejam cumpridas. Assim como no Blip, as condições de vitórias são as mesmas. Ganha quando o contador de pontos chegar em 10, ou o de tempo alcançar 60.
HUD - Funções que mostram informações relacionadas ao jogo, tais como: tempo, pontuação, etc.
hud(): Exibe a pontuação dos jogadores e o tempo.
paginaGameOver(): Congela a bola e exibe a tela de vencedor, permitindo o reinício do jogo clicando com o mouse aonde pede. Caso reinicie, reseta os valores de tempo, pontuação e posição da bola.
Controles - Funções que permitem a realização do movimento das pás.
keyPressed(): Quando uma das teclas relacionadas ao movimento é pressionada, muda sua respectiva variável booleana para "true", acionando o movimento.
keyReleased(): Quando uma tecla pressionada é solta, muda sua respectiva variável booleana para "false", encerrando o movimento.
Foi a única forma que eu encontrei de deixar que os jogadores jogassem sem interferir no movimento da pá do outro.
Link do código: https://drive.google.com/open?id=1pR89AZAEx2doztYCVoduVylvoolYcfuQ












Nenhum comentário:
Postar um comentário