Tarefa da aula 12: Jogo simples com MEFs
Objetivo:
Discutir o uso de MEFs e do padrão MVC como base da implementação de um jogo onde um personagem, visto de cima, caminha por um mundo simples, podendo virar-se em quatro direções (cima, baixo, direita e esquerda), com imagens à sua escolha.
A primeira etapa do padrão MVC (Modelo, Visualização e Controle) seria o Modelo, e nele temos 3 MEFs (Máquina de Estados Finitos) inicialmente: uma para o personagem e seus estados, outra para o desenho do personagem, que vai alterar os sprites a serem exibido, mas que por enquanto vai desenhar apelas um círculo na tela, e por último uma para a colisão do personagem com as bordas. Elas serão chamadas de personagem(), desenhaPersonagem( ) e colisao(), respectivamente:
MODELO:
Agora temos um código básico que vamos usar para a segunda etapa do MVC, o Controle. Aqui temos dentro do void draw() apenas a função que cria o personagem e checa seus estados. Note que é dentro dela que chamamos a função que desenha o personagem e a de colisão.
O que todas essas MEF tem em comum é que cada uma checam constantes e variáveis (criadas no começo do código) que são alteradas pelas outras MEFs, por exemplo, tanto a colisão() quanto a personagem() checam as variáveis pX e pY, mas as alteram de maniras diferentes, e em circunstâncias diferentes. Já a MEF desenhaPersonagem() checará as constantes que são alteradas pela MEF personagem(), mas por enquanto, como dito, ela só desenha um círculo, como visto abaixo:
CONTROLE:
Agora sabendo que o código está funcionando, é hora da última parte do MVC, a Visualisação. Aqui vamos adicionar os sprites e dar mais complexidade a MEF desenhaPersonagem(). Enquanto a MEF personagem() muda o estado do personagem da acordo com a tecla do mouse pressionada, a MEF desenhaPersonagem() usa essa informação para exibir os sprites nas posições pX e pY na tela, que por sua vez também são alteradas pelas MEFs personagem() e colisao().
Note que um último passo foi criar uma função chamada mundo(), que apenas exibe uma imagem de fundo no jogo, e chamá-la no void draw() junto com o personagem(). E este é o resultado final:
VISUALIZAÇÃO:






Comentários
Postar um comentário