Trabalho Prático 2 de Fundamentos Teóricos da Computação: Aplicação de AFDs na criação de jogos eletrônicos
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.
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.
A seguir, serão apresentadas as funções principais dos algoritmos presentes neste trabalho.
É a posição padrão do personagem. Ao não pressionar nenhuma tecla, ele ficará parado em sua posição atual.
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.
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.
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.
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.
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.
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.
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.
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 zzwefaaaEntã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.








