Skip to content

About

Trabalho prático para a disciplina de Programação e Desenvolvimento de Software 1 da UFMG.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

30 Commits

Folders and files

Repository files navigation

Trabalho prático de Space Invaders

Este trabalho prático apresentado para a disciplina de Programação e Desenvolvimento de Software 1 (2025.1 - UFMG) consistiu no desenvolvimento de um jogo completo em linguagem C usando a biblioteca Allegro5. Nele, implementei uma versão de Space Invaders, inspirada no clássico de 1978, porém com acréscimos para tornar a jogabilidade mais interessante e cumprir requisitos para pontuação extra.

Captura de tela de 2025-06-29 13-17-46

Jogo

Das mecânicas

O jogo inclui a mecânica clássica de ter que eliminar todos os aliens antes que eles alcancem o chão ou toquem o canhão. Além disso, há um sistema de fases disponivel após vencer o primeiro nível, nesse sistema a cada nível os aliens ficam mais rápidos, ganham mais vida mas dão mais pontos. A pontuação dada por cada alien varia conforme o tipo de alien (diferenciados pelo sprite), os aliens mais altos tem maior pontuação. Além disso, o sistema de tiro também foi repensado para incluir diferentes tipos de tiros além do clássico, os novos tiros são:

  • tiro de linha (8%), elimina uma linha inteira;
  • tiro bomba (10%), elimina aliens adjacentes ao atingido.

Cada tipo de tiro vem acompanhado de uma probabilidade do jogador obter ao acertar um tiro qualquer, essa probabilidade pode ser alterada no método void init_shot_type(struct Player *player) do arquivo player.c. A quantidade de tiros especiais que um jogador possui é indicada na parte inferior da tela.

Captura de tela de 2025-06-29 13-21-46

Dos controles

Os controles do jogo são feitos da seguinte forma para cada jogador:

Ação do jogador 1 Tecla
Movimentação para esquerda A
Movimentação para direita D
Tiro clássico W
Tiro de linha E
Tiro bomba R
Ação do jogador 2 Tecla
Movimentação para esquerda ←
Movimentação para direita →
Tiro clássico ↑
Tiro de linha space
Tiro bomba L

Outros controles relvantes é a tecla "ESC" para sair de determinadas telas, P para pausar um jogo e "AWSD" para se mover.

Dos modos de jogo

Incialmente, só há dois modos disponíveis, um novo jogo no nível zero ou o jogo para dois jogadores. No modo para dois jogadores, vence aquele que obter a maior pontuação ao fim do jogo. No modo "Novo Jogo", cria-se um novo player que poderá ser salvo na memória com a devida pontuação, esse player poderá repetir a fase, criar um novo jogo ou apenas sair do jogo, registrando o progresso que ele teve (progresso não poderá ser retomado). Uma vez que o jogador avança um nível, ele pode jogar o nível seguinte no modo "New Game Plus" ou repetir o ultimo nível jogado.

Do ranking

Ao salvar o progresso, a pontuação e nome do jogador serão registrador em um ranking, exibido de forma ordenada com as maiores pontuações em destaque.

Compilação

A compilação é feita através do arquivo Makefile. Os targets aceitos pelo make são as seguintes:

Target Ação
all Compila o projeto (padrão)
windows Compila o projeto (Windows)
clean Remove arquivos gerados
rebuild Recompila completamente
help Mostra os targets

Uma vez que o projeto foi desenvolvido e testado em ambiente linux, acredito que é o mais prático para jogar. Caso seja usado o Windows, pode ser necessário baixar algumas DLLs.

Arquivos

Para o funcionamento do jogo é fundamental a existência dos arquivos em "assets/classic/", visto que neles estão todas as assets usadas. Além disso, ao jogar será criado o diretório "game_data", onde estarão os registros de pontuação máxima e ranking.

Outras informações

Outras informações, como detalhes dos aliens e formação dele, formas de implementações e sistemas podem ser encontradas nos arquivos de headers documentados.

About

Trabalho prático para a disciplina de Programação e Desenvolvimento de Software 1 da UFMG.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages