-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the SpaceInvaders wiki!
Padrões aplicados no Projeto:
- Arquiteturais: Observer; MVC;
- Criacionais: FactoryMethod; SingleTon;
- Estruturais: Flyweight, Adapter;
- Comportamentais: GameLooping; UpdateMethod; Iterator;
Os locais aplicadose informações extras:
Observer: O padrão "Observer" tem os seus "Listeners" e "Events" dentro do pacote "listenners" e com as implementações em classes do pacote "gameobjects" como "Nave" e "Inimigo" onde se inscrevem para ouvir e também disparam para ouvintes.
MVC: o padrão "MVC" é divido no código em:
- Model: As classes que são filhas de GameObject (Ex: "Nave", "InimigoRosinha", "TiroInimigo") representam os dados.
- View: Quando alguém precisa ser imprimível na tela precisará assinar a "interface" "Printable" como as classes "Sprite" e suas classes filhas, "Background" e suas classes filhas e a classe "Texto" e se inscreverem na lista do "Controller".
- Controller: A classe Jogo faz o papel intermediário de mandar as entradas e disparar os eventos de comando para o View e/ou o Model.
FactoryMethod: Existem duas implementações deste padrão nas classes "InimigoFactory" e "TiroFactory".
SingleTon: A classe "Resolucao" é utilizada como uma implementação do "SingleTon".
Flyweight: Nas "Factorys", citadas acima, fazemos o reuso das imagens sem a necessidade de carrega-las sempre que for instanciado um dos inimigo e/ou tiros inimigos. As imagens reutilizadas são os vetores de "BufferedImage" em "InimigoFactory" e "TiroFactory".
Adapter: O padrão "Adapter" é implementado na classe "BackgroundImage" que é um Background que faz o encapsulamento de S"prite", a necessidade é pelo motivo da classe se comportar como um "Sprite" porém é necessário que seja filha de "Background" para que seja renderizado de forma prioritária.
GameLooping: O padrão "GameLooping" é encontrado na classe "Jogo", especificamente no método "startGame", ele tem o objetivo de fazer as atualizações no jogo e ordenar a renderização dentro do "Frame per Seconds" determinado.
UpdateMethod: Este padrão define que cada elemento no jogo possuam um método "update" que será chamado de por um "GameLooping" para que haja a atualização de cada objeto no jogo. No projeto existe a classe "GameObject" onde cada elemento do jogo é filha desta classe, como por exemplo as classes "Nave", "Inimigo" e "Tiro" e até mesmo elementos não visíveis como a classe "Parede" que está nas extremidades da tela.
Iterator: Este padrão foi implementado não foi utilizado a implementação contida no próprio JAVA, no projeto possui a interface "Iterator" tendo como assinante a classe "ColisaoIterator", e na classe "Colisao" no metódo "verificarColisao" a parte de iteração da implementação.
That's All Folk! :)