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: