Skip to content

higorsnt/SpaceInvaders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPACE INVADERS 🛸

Language Modules

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 🌎!

Tela de Jogo

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

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

Autores

Código desenvolvido para auxiliar aos alunos da disciplina de Laboratório de Programação I
Autores:

  1. Módulos são arquivos que contêm definições e instruções de Python, ou seja, qualquer arquivo .py é um módulo!