Skip to content

gustavopvilela/afd-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabalho Prático 2 de Fundamentos Teóricos da Computação: Aplicação de AFDs na criação de jogos eletrônicos

FTC Python

Introdução

O código deste repositório representa o segundo trabalho prático da disciplina de Fundamentos Teóricos da Computação. Seu intuito é demonstrar a aplicação de autômatos finitos determinísticos na criação de jogos de computador, desenvolvendo movimentos simples de um personagem em tela.

Este trabalho foi desenvolvido pelos alunos Gustavo Henrique Pereira Vilela e Iasmim Garcia Castro.

Os sprites (imagens, frames) utilizados nestes códigos são do personagem Ori, protagonista dos jogos Ori and the Blind Forest e Ori and the Will of the Wisps.

Ori and the Will of the Wisps

Entretanto, as imagens de fato são da colaboração dos jogos anteriormente citados com o jogo Rivals of Aether, a sprite sheet foi retirada do site DeviantArt, todos os créditos aos seus devidos criadores.

Os efeitos sonoros utilizados neste trabalho são os presentes no jogo Ori and the Blind Forest. A música de fundo (trilha sonora) aqui presente é Luma Pools, composta por Gareth Coker, presente em Ori and the Will of the Wisps.

Este trabalho não possui fins lucrativos.

Funções do programa

A seguir, serão apresentadas as funções principais dos algoritmos presentes neste trabalho.

Idle (ficar parado)

Idle

É a posição padrão do personagem. Ao não pressionar nenhuma tecla, ele ficará parado em sua posição atual.

Walk (andar)

Walk

Ao pressionar a tecla A ou D, o personagem fará um andado normal para a esquerda ou direita, respectivamente. Ao mantê-las pressionadas, Ori andará até chegar ao limite definido para a tela.

Jump (pular)

Jump

Ao clicar na tecla W, Ori dará um grande salto. Este salto pode ser modificado pelas teclas A ou D, que o fará movimentar no ar para a esquerda ou direita, respectivamente. Por estar pulando, este movimento é mais rápido que o andado comum.

Crouch (agachar)

Crouch

Pressionando a tecla S, o personagem agachará. Esse movimento pode ser modificado pelas teclas A ou D, que o farão mover de forma agachada para a esqueda ou direita, respectivamente. Vale notar que este movimento é mais lento que o andado normal, justamente por ele estar agachado.

Dash

Dash

Clicando na tecla F, o personagem dará uma corrida rápida para uma direção, percorrendo diversos pixels de uma só vez. Essa ação é influenciada pelo lado que Ori estiver olhando no momento: esquerda ou direita.

Hammer (Ataque de martelo)

Hammer

O primeiro ataque feito por Ori é seu ataque de martelo presente em seu jogo Ori and the Will of the Wisps. Aqui, ele é realizado ao pressionar a tecla Z. A direção do ataque será a mesma que o personagem estiver olhando no momento: esquerda ou direita.

Energy Explosion (Ataque de explosão de energia)

Energy Explosion

O segundo ataque feito por Ori é seu ataque de explosão de energia presente na colaboração do jogo original com Rivals of Aether. Aqui, ele é realizado ao pressionar a tecla E. A direção do ataque será a mesma que o personagem estiver olhando no momento: esquerda ou direita.

Super (combo)

Super

O combo aqui é definido como uma sequência de teclas que devem ser apertadas em ordem e simultaneamente para que um ataque especial ocorra. Ao pressionar as teclas O, R e I – formando a palavra "Ori", será mostrado em tela uma animação especial como seu super.

Modo de entrada com string

Uma vez que este trabalho é sobre autômatos finitos determinísticos, nada mais justo que permitir que se entre com uma cadeia de caracteres para que o autômato a processe. Essa forma de entrada não é em tempo real, então, o usuário deve passar toda a cadeia de caracteres desejada antes de executar o programa.

Para fazer isso, é simples:

    $ afd-game> cd src
    $ afd-game/src> python main.py [cadeia_de_caracteres]

Por exemplo, se o comando digitado for:

    python main.py zzwefaaa

Então, Ori atacará duas vezes com o martelo, pulará, fará um dash e andará para a esquerda três vezes.

Como essa funcionalidade é apenas para testes no autômato, ela está restrita a ser executada a partir da linha de comando, precisando o usuário encerrar o jogo para testar uma cadeia diferente. Entretanto, essa funcionalidade não impacta no jogo em tempo real, podendo o jogador usufruir do jogo normalmente após executadas todas as ações descritas na cadeia.


Feito com ❤️ para o professor Walace.

About

2º trabalho prático da disciplina de Fundamentos Teóricos da Computação.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages