Skip to content

diego-aquino/flap-plp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

   FlapPLP

Projeto funcional (Haskell)

Instalação

Requisitos

Para utilizar a versão funcional desse projeto, escrita em Haskell, é preciso ter as seguintes ferramentas instaladas:

Executando localmente

  1. Clonar repositório

    git clone https://github.com/diego-aquino/flap-plp.git
    cd flap-plp/Haskell
  2. Configurar o Cabal e instalar as dependências

    cabal update
    cabal install cabal-install
    cabal build
  3. Executar o projeto

    cabal run

Projeto lógico (Prolog)

Instalação

Requisitos

Para utilizar a versão lógica desse projeto, escrita em Prolog, é preciso ter as seguintes ferramentas instaladas:

Executando localmente

É necessário ter um ambiente Unix para executar o projeto lógico, pois algumas funcionalidades avançadas do terminal não estão disponíveis em Prolog para Windows.

  1. Clonar repositório

    git clone https://github.com/diego-aquino/flap-plp.git
    cd flap-plp/Prolog
  2. Executar o projeto

    swipl -q -f Main.pl

    Depois de entrar no prompt interativo, chame a regra main:

    ?- main.

Para uma melhor experiência, recomenda-se ajustar o tamanho do terminal para as seguintes dimensões:

  • Altura: ~30 caracteres
  • Largura: ~130 caracteres

Arquitetura

Na implementação, buscamos definir uma arquitetura de entidades e módulos, de modo a manter coesão e facilitar mudanças futuras. Abaixo, estão os principais módulos criados e os seus relacionamentos:

  • GameController: controlador central do jogo, dedicado a definir as regras de negócio, lidar com os inputs do usuário e coordenar outras entidades.

  • GameState: responsável por armazenar o estado do jogo, incluindo o tipo de tela atual (em jogo, pausado ou game over), o pássaro, os canos, a pontuação atual e a pontuação máxima atingida.

  • GameScreen: dedicado fazer a renderização dos frames no terminal, de acordo com o estado atual do jogo (game state).

  • Bird: representa o jogador, que pode voar e colidir com canos ou com as bordas da tela, sempre sofrendo a ação da gravidade.

  • Pipe e PipeGroup: representam os obstáculos enfrentados pelo jogador.

  • Area e Line: representam a área ocupada por uma entidade (bird ou pipes), de acordo com as suas coordenadas e a sua representação em string, sendo utilizados no processamento das colisões.

  • Terminal: dedicado a lidar com o terminal, como obter os inputs do usuário, fornecer as dimensões da tela e movimentar o cursor.

  • LocalStorage: responsável por ler e salvar dados localmente, sendo utilizado para manter a pontuação máxima entre as execuções do programa.

Autores

About

🐦 Flappy Bird on terminal

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •