Postagens

Trabalho pt.1: Porte de um jogo clássico

Imagem
Apresentação O jogo que escolhi foi o Green  House , lançado para Nintendo Game & Watch Multi Screen  em 1982. Ele tem outras duas versões laçadas em coletâneas de jogos clássicos da Nintendo, uma de 1999 para Game Boy Color  chamada Game & Watch Gallery 3 e outra de 2006 para  Nintendo DS , chamada Game & Watch Collection . O jogo se passa em uma estufa e o personagem controlado pelo jogador tem que defender suas flores de insetos que tentam come-las. Ele faz isso do jeito mais ecologicamente errado possível: jogando veneno nos insetos! A cada inseto morto o jogador ganha de 1 a 3 pontos, e o jogo acaba quando se consegue 999 pontos ou quando 3 flores são mortas por qualquer um dos insetos que surgem na tela. Um vídeo mostrando a jogabilidade e algumas mecânicas do jogo pode ser visto neste link:  https://www.youtube.com/watch?v=ydg9qci82OE Modelos Naturais Jogador Pode se estar em 10 posições diferentes pela estufa, que é divi...

Tarefa da aula 13: Diagrama de interação

Imagem
Objetivo: Apresentar e discutir um diagrama de interação entre MEFs para a implementação da primeira parte do seu trabalho. Na imagem acima temos um diagrama de algumas das Máquinas de Estados presentes na primeira parte do trabalho da disciplina, sobre o jogo Green House do Nintendo Game & Watch. Podemos notar que alguns dos estados das MEFs são usados como condições para mudanças de estados de outras MEFs, assim temos interligação entre as máquinas de estado em que uma depende da ação da outra. Nesse exemplo temos a MEF flor  com dois estados: VIVA e MORTA . Logo que ela morre, vemos que ela volta para o estado VIVA depois de 2 segundos, mas assim que o estado muda de VIVA para MORTA eles dispara uma mudança de estado dentro da MEF miss , que vai de 0 PERDAS para 1 PERDA  e assim por diante até que chegue em 3 PERDAS . A MEF miss é responsável apenas por contar as perdas do jogador, e por sua vez causa um mudança de estados dentro da MEF fim_de_jogo , q...

Tarefa da aula 12: Jogo simples com MEFs

Imagem
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 ...

Tarefa da aula 11: Mais estados para a MEF

Imagem
Objetivo: Apresentar e discutir a especificação e a implementação dos estados 'Pular Martelando' e 'Martelar Pulando'.  O código iniciado em sala já tinha 3 estados prontos: PARADO, MARTELANDO, e PULANDO. O objetivo era adicionar mais dois estados: PULAR MARTELANDO e MARTELAR PULANDO. A lógica aqui era pensar que, embora os dois estados fizessem coisas bastante parecidas, que seria fazer o personagem martelar enquanto está no ar, eles tinham implementações bastante diferentes entre si. Cada um é ativado a partir de estados diferentes, e eles são chamados com comando diferentes dados pelo jogador. Um é chamado com a barra de espaço e o outro é chamado com a seta para cima. Como é possível notar na imagem, esses estados extras são independentes entre si e não interagem, ou seja, nenhum é ativado a partir do outro. Para alternar entre eles o personagem tem que voltar para o estado parado. Como eu já tinha prontos outros dois estados, o de pulo duplo (PULAN...

Tarefa da aula 10: Tesselação

Imagem
Objetivo: Relacionar o conceito de tesselação ao estabelecimento de mapas isométricos, com base no desenvolvimento de uma aplicação que empregue dois ou mais tiles distintos, à sua escolha. A tesselação é uma técnica de recobrimento de uma superfície usando polígonos como unidades básicas e arrumado-os de modo que não haja espaço em branco (não coberto) na superfície. É uma técnica bastante usada em mosaicos, tapeçaria e ilustração. Alguns exemplos mais comuns são encontrados na arquitetura islâmica e em ilustrações do artista holandês M.C. Escher (1898-1972). Aqui, com o conceito de Tesselação em mente e aproveitando os códigos passados em sala, vamos montar uma matriz para receber uma imagem através de um Switch Case e montar um mapa isométrico: Perceba que na tesselação não há sobreposição dos elementos, mas vamos usar apenas parte do conceito para arrumar nosso tile em uma superfície plana. É importante lembrar aqui que para isso funcionar eu usei uma ...

Tarefa da aula 09: Pong para um jogador - keyPressed e keyPressed()

Imagem
Objetivo: Reimplementar o jogo Pong para um jogador empregando a função keyPressed() e comparar o uso da mesma em relação ao emprego original da variável de sistema keyPressed . Inicialmente em sala, fizemos o jogo Pong para um jogador usando o sistema MVC (modelo, visualização e controle). A parte do controle, os inputs do usuário, foi feita usando a variável keyPressed . Agora temos que ao invés dela, usar a função keyPressed() e comparar os resultados. Pois bem, inicialmente, temos o código da aula, feito com a variável interna keyPressed: Após a implementação da função keyPressed() não é possível notar nenhuma diferença visual do jogo, mas no aspecto do controle temos algumas mudanças fundamentais. Mas antes vamos ver como a variável keyPressed e a função keyPressed() funcionam. A variável keyPressed é uma variável interna do Processing, e é do tipo booleana, ou seja ela só pode ser verdadeira ou falsa. A implementação dela no jogo acontece dentro do void draw(...