Projeto desenvolvido em Python3.7 utilizando a biblioteca PyArcade que visa recriar o classico jogo Space Invaders, porém, com uma jogabilidade multiplayer local, aonde dois jogadores competem por mais pontos contra uma invasão alien.
O jogo foi projetado como uma forma de aprendizado da biblioteca PyArcade e de O.O.P como um todo, na disciplina de Programação do segundo ano de Técnico de Informática no Instituto Federal Catarinense - Campus Blumenau.
Os aspectos principais foram planejados para a disciplina de Engenharia de Sofwate e podem ser econtrados em:
- Diagrama de Classes - UML - Utilizado como base para as funcionalidades e lógica das classes.
- Requisitos Funcionais e Não-Funcionais - Requisitos levantados para o projeto.
!Titulo](https://gifyu.com/image/mFcE)
O programa pode ser tanto rodado a partir da execução do arquivo "jogo.py" ou instalado como um pacote, incluindo assim todas as classes para uso em outros projetos. (A Instalação é bem simples, utilizando apenas o sistema de packages)
O projeto faz o uso, principalmente, da biblioteca PyArcade e dos seus próprios Requerimentos, porém tudo deve ser atendido com um simples pip install do arquivo requirements.txt, naturalmente presente no pacote.
python3 -m pip install -r requirements.txt
Toda a funcionalidade do projeto é extensamente comentada e explicada no seu decorrer, para um melhor entendimento de alguem que possa querer modifica-lo ou vir a utiliza-lo como base.
Já na tela inicial, o jogador é apresentado aos comandos básicos de movimentação e ataque.
Cada um dos aliens são criados de maneira específica para sua coluna, com uma textura e pontuação específica.
A partir dai, o jogo segue o modelo clássico de SpaceInvaders, no qual várias fileiras de aliens se movem em direção dos jogadores, ganhando velocidade conforme mais deles são abatidose os níveis avançam.
Diferentemente do original, essa versão apresenta jogabilidade de dois jogadores local, no qual ambos tentam se defender dos aliens, porém competem para ver quem consegue a maior pontuação no final, a qual é demonstrada em tempo real no topo da tela, incluindo qual deles está vencendo no momento. Cada jogador também possuí seu próprio número de vidas, sendo que o jogo só acaba quando as de ambos forem esgotadas.
Pode-se tambem notar que há diferentes coberturas para proteger os jogadores dos lazers inimigos e vice-versa. Essas coberturas são destruídas de maneria dinâmica pelos disparos e compostas por uma série de diferentes pedaços, de maneira que cada um seja independente.