O jogo Stacker
O objetivo do jogo Stacker (empilhador)é chegar até o topo empilhando tijolinhos. Em shoppings, há uma versão desse jogo na qual quando se chega no topo você ganha brindes. Vejam esse vídeo do jogo que eu achei no youtube:
O jogo que vou mostrar aqui é um pouco diferente. Iremos amontoar somente um retângulo, mas o retângulo pode estar próximo ao retângulo de baixo, não exatamente no topo dele. O número de retângulos para preencher e a velocidade vão aumentar de acordo com o nível do jogo.
O jogo em Processing
O jogo foi anteriormente criado em Processing, mas a maioria do código eu pude reusar na versão em JavaFX!
Você pode encontrar a versão do jogo em processing no meu github.
Criando jogos em JavaFX
Como já falei em uma postagem anterior, JavaFX é uma boa plataforma para jogos desde sua versão 1.0. Existia até um blog específico para jogos com JavaFX Script e temos também alguns exemplos que podem ser baixados no site da Oracle.
Como já sabemos, JavaFX tem todos os recursos para criamos jogos: animações, detecção de colisão, efeitos especiais, tocar sons, etc.
Nossa implementação do Stacker Game
O jogo é basicamente baseado na atualização de uma matriz booleana e na leitura da mesma para criar uma representação visual. Quando o usuário clica no jogo, nós fazer um loop na matriz para verificar se a linha anterior é true ou se o bloco atual (o que se mexe) está adjacente a um bloco na linha anterior.
As duas classes mais importantes no nosso programa é a GameEngine e Game em sí. A classe game engine é responsável em fazer o jogo à vida, pois ela irá fazer o jogo atualizar a tela numa determinada frequência e fazer ele se desenhar.
O jogo é responsabilizado a desenhar e atualizar o cenário de acordo com o tempo e a entrada do usuário. Aqui está o código dessas duas classes:
Essas classes não fazem nada! Precisamos criar as classes concretas, então criamos a classe StackerGame que contém a matriz que representa o jogo e desenhará a grade e os retângulos de acordo com o tempo, nível e a entrada do usuário.
A lógica do jogo é basicamente mover um booleano na matriz e ajustar isso qunado o usuário clica. Se o clique do usuário foi feito quando o retângulo tem um bloco abaixo ou adjancente, o jogo vai continuar. Se não, iremos chamar o fim do jogo e quando o usuário clicar again, o jogo vai recomeçar. Note que a pontua;áo do jogo é maior quando o usuário faz uma pilha perfeita e menor se o usuário faz a pilha usando um bloco adjacente.O jogo é desenhado em um canvas, que facilita o controle no nosso caso(que estamos vindo do Processing!).
Notem que nós expomos algumas variáveis usando propriedade JaavaFX. Essas propriedades são usadas em nossa aplicação principal para mostrar a pontuação, nível e eventualmente o label de fim de jogo. Veja o código dessas duas classes:
Por fim, veja o jogo em ação:
Nenhum comentário:
Postar um comentário