SPACE INVADERS 🛸
ALIENS ESTÃO INVADINDO A TERRA!
Calma, essa é apenas a temática que do jogo Space Invaders!
Sendo originalmente lançado em 1978 pela TAITO CORPORATION e desenhado por Tomohiro Nishikado, e depois licenciado pela Midway. Este joguinho foi um dos primeiros cuja temática era de tiro e que possuia gráficos bidimensionais. O sucesso se estende até os dias atuais!
O objetivo do jogo é destruir os aliens com a sua nave e dessa forma impedir que a invasão se concretize. Porém, não se pode dormir na direção, já que a qualquer momento os aliens podem te atingir e conseguir o que tanto querem: conquistar a Terra 🌎!

Tópicos
Eventos Essenciais em um jogo
Para se construir um jogo é necessário ter conhecimento de quais eventos são importantes para o mesmo. Portanto, abaixo temos uma tabela com alguns desses eventos:
| Eventos | Explicação |
|---|---|
| Surface | são as superfícies em 2D ou 3D onde se desenha o jogo. |
| Display | são os eventos que manipulam a tela, abrindo a possibilidade de atualizar ou configurar a tela, entre outras possibilidades. |
| draw | são os desenhos na superfície. |
| image | são as imagens. Este é o que possibilita a leitura ou gravação de imagem(ns). |
| event | são os eventos do jogo. |
| font | utilizado para trabalhar com fontes. |
| transform | permite rotacionar, espelhar, modificar ou cortar as imagens do jogo. |
| mixer | facilita o trabalho com os sons no jogo. |
| Clock | trabalha com o tempo dos quadros do jogo. |
| sprite | é uma imagem que faz parte do jogo, isto é, são os componentes que aparecem no jogo. Podendo se dividir em Sprite e Group (a classe Group serve para agrupar várias sprites). |
Pygame
PyGame é um módulo1 usado na programação de jogos 2D, escrito utilizando C e Python. Ele pode ser executado em todas as principais plataformas e fornece ferramentas simples para gerenciar ambientes gráficos complexos, com movimentos e sons.
Alguns módulos presentes em pygame são:
| Módulo | Funcionalidade |
|---|---|
| cursors | carrega imagens de cursores, como mouse. |
| display | controla a exibição da janela ou tela. |
| draw | desenha formas simples sobre uma Surface. |
| event | controla eventos e fila de eventos. |
| font | cria e renderiza fontes. |
| image | salva e carrega imagens. |
| joystick | controla dispositivos joystick. |
| key | controla o teclado. |
| locals | contém constantes de Pygame. |
| mixer | carrega e executa sons. |
| mouse | controla o mouse. |
| movie | executa filmes no formato mpeg. |
| time | controla a temporização. |
| transform | permite redimensionar e mudar a orientação de imagens. |
| cdrom | gerencia o dispositivo de CD-ROM e a execução do áudio. |
| sndarray | manipula sons com NumPy. |
| surfarray | manipula imagens com NumPy. |
FONTE: LINK
Instalando o Pygame
Inicialmente é necessário ter o Python instalado e o pip. Caso não tenha um dos dois instalados siga o passo a passo visto aqui para Linux ou aqui para Windows e não se esqueça de adicionar Python na variável de ambiente!.
- Para iniciar a instalação do Pygame, é recomendável estar com o pip atualizado, para isso faça (esse passo pode ser pulado se você acabou de instalá-lo):
$ pip install --user --upgrade pip
- Instalando Pygame:
$ pip install --user pygame
Executando o jogo
Qualquer um pode baixar o código do jogo e executar clicando no botão verde Clone or download e pode baixar o código clicando aqui ou digitando no terminal o comando:
$ git clone https://github.com/HigorSnt/SpaceInvaders.git
Se optar pela primeira opção lembre-se de extrair!
Em seguida, entre na pasta do jogo utilizando o terminal:
$ cd SpaceInvaders
Por fim, faça o seguinte comando:
$ python spaceinvaders.py
Em seguida deverá abrir a janela do jogo 😁.
Detalhes da Construção do Jogo
Para a construção deste projeto foi necessário criar diversas classes com o objetivo de facilitar o tratamento de colisões, representação de entidades importantes para a jogabilidade, entre outros motivos. Algumas das classes criadas foram:
| Edge | Estrutura criada para facilitar a análise de colisões com as bordas. |
| Block | Responsável por criar barreiras que protegem a nave. |
| Ship | Classe que representa a nave do jogador. |
| Invader | Classe que representa os invasores. |
| Mystery | É a representação da nave Mystery presente no jogo tradicional. |
| Bullet | Classe que representa as balas de todos os objetos que realizam disparos. |
| SpaceInvaders | Classe principal responsável por toda a lógica do jogo. |
Comandos
Para realizar comandos no jogo é necessário apenas o uso teclado e a sua listagem está abaixo:
| Iniciar o jogo | ENTER ou SPACE |
| Fechar ou Encerrar | ESC ou clicar no ❌ da janela. |
| Movimentar a nave | Setas direcionais (⬅ ou ➡) |
| Realizar disparo | Seta direcional (⬆) ou SPACE |
| Reiniciar o jogo (na tela de Game Over) | ENTER |
Links Úteis
- Apresentação feita em sala de aula
- A documentação oficial do Pygame é muito fácil de ser utilizada!
- Esse material do curso realizado pela UFG!
- Repositório do Pygame no Github
- Material: Programação em Python e Introdução ao Pygame
- Dúvidas com Python Orientado à Objetos?
- Qual cor usar? Acesse aqui!
Autores
Código desenvolvido para auxiliar aos alunos da disciplina de Laboratório de Programação I
Autores: