Skip to content

Projeto para a disciplina de Paradigmas de Programação da Unb, com o foco na criação de um jogo da memória utilizando programação funcional em Haskell

Notifications You must be signed in to change notification settings

UnBParadigmas2022-1/2022.1_G2_Funcional_ProjetoMemoria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 

Repository files navigation

2022.1_G2_Funcional_ProjetoMemoria

Projeto Memória

Disciplina: FGA0210 - PARADIGMAS DE PROGRAMAÇÃO - T01
Nro do Grupo: 02
Paradigma: Funcional

Alunos

Matrícula Aluno
180119818 Felipe Boccardi Silva Agustini
180052845 Gabriela da Gama Pivetta
180017659 Giovana Vitor Dionisio Santana
170011267 Giovanna Borges Bottino
180017870 Giulia Lobo Barros
170144488 Henrique Amorim Costa Melo
180018574 Hérya Rodrigues Alcantara
180025601 Murilo Gomes de Souza

Sobre

Jogo da memória desenvolvido com Haskell e aplicando o paradigma funcional. Possui Funções puras, Imutabilidade, Transparência referencial e Funções de alta ordem como filter, map e reduce.

Screenshots

Minha Figura

Menu

Minha Figura

Fim do Jogo

Instalação

Linguagens: Haskell
Tecnologias: Haskell, Random, Stack e GHC

Link para instalação do stack: https://docs.haskellstack.org/en/stable/install_and_upgrade/

Para rodar o Projeto do Jogo da Memória, é necessário seguir os passos abaixo:

  1. Entrar na pasta correspodente ao repositório
cd 2022.1_G2_Funcional_ProjetoMemoria/src
  1. Instalar o random
stack install random
  1. Iniciar o GHC com o stack
stack ghci
  1. Compilar
:load Main
  1. Rodar Jogo
main

Uso

  1. Depois que o projeto começar a rodar, irá aparecer o menu indicando as instruções para iniciar o jogo:

Minha Figura

Menu

2. É possível escolher a opção **1**, a qual iniciará o jogo e mostrará novas instruções para identificação do jogador (Após o primeiro jogador ser identificado é possível inserir mais um jogador no jogo, porém essa é uma ação opcional) ou a opção **2**, a qual irá finalizar a aplicação:

Minha Figura

Número e identificação de jogadores

Minha Figura

Saída

3. Depois que todos os jogadores são identificados, são mostrados os níveis de dificuldade do jogo (Neste momento também é possível sair do jogo):

Minha Figura

Dificuldades

4. Após escolher um nível de dificuldade, o jogo de fato começa. O tabuleiro é representado por linhas de letras e colunas de números e cada carta (representada por um ' * ' ) é localizada pelo par de uma letra com um número (e.g. A1, B2, B4). Em cada rodada (de cada jogador), o jogador escolhe duas cartas e pode ver seus valores. Quando elas são iguais, a pontuação do jogador aumenta em +1 e as cartas viram novamente, mas trocando seu carácter de ' * ' para ' _ '. Caso contrário, o tabuleiro volta a apresentar o carácter ' * ' no lugar das cartas escolhidas e a pontuação não muda:

Minha Figura

Primeira Rodada (Tabuleiro Original sem nenhum acerto)

Minha Figura

Rodada com e sem acertos

5. Ao final do jogo, são mostradas informações como o número de pontos feitos pelo jogador vencedor e o nome dele:

Minha Figura

Fim do Jogo

Gif do fluxo completo:
content

Vídeo

Apresentação - Jogo da Memória (Fazer o download)

Participações

Apresente, brevemente, como cada membro do grupo contribuiu para o projeto.

Aluno Contribuição Significância da Contribuição para o Projeto (Excelente/Boa/Regular/Ruim/Nula)
Felipe Programação das Cartas, Tabuleiro e Finalização do trabalho Excelente
Gabriela Programação da Pontuação, ajustes e Finalização do trabalho Excelente
Giovana Programação dos Jogadores e Finalização do trabalho Excelente
Giovanna Programação das Cartas, Tabuleiro e Finalização do trabalho Excelente
Giulia Programação das Dificuldades e Finalização do trabalho Excelente
Hérya Programação dos Jogadores e Finalização do trabalho Excelente
Henrique Programação da Pontuação, ajustes e Finalização do trabalho Excelente
Murilo Programação das Dificuldades e Finalização do trabalho Excelente

Outros

I. Lições Aprendidas

  • Usar system.random
  • Recursão
  • Tratar todas as possíveis entradas com guarded ou if e else
  • Linguagem Haskell

II. Percepções

Uma das maiores percepções obtidas pela equipe ao longo da execução deste trabalho foi a modularização possibilitada pelo Paradigma Funcional, principalmente pelo Haskell. Todo o trabalho foi divido em módulos que compõem o jogo da memória. Estes módulos puderam ser trabalhados em paralelo para depois serem amarrados a fim de termos um jogo em plena funcionalidade.

III. Contribuições e Fragilidades

Para a elaboração deste trabalho, a equipe utilizou somente uma biblioteca externa e nenhum código de terceiros. Desta forma, o jogo implementado é, quase que integralmente, resultado do trabalho dos membros. Assim, é possível perceber um trabaho com lógica própria, baseado nos conhecimentos que a equipe obteve ao longo deste módulo da disciplina.

Entretanto, ainda são notadas algumas fragilidades no projeto. A primeira delas, e que pode ser considerada como um possível trabalho posterior, é o tratamento das exceções. Ao receber dados diferentes do que é esperado pelo jogo, o programa quebra. Utilizando mecanismos para tratamentos de erros, é possível eliminar esta fragilidade. Outra fragilidade, que afeta a jogabilidade do projeto, é o fato do terminal mostrar os resultados das rodadas ao longo da execução do jogo. Desta forma, é possível que os jogadores burlem o propósito do jogo da memória, que é justamente memorizar as cartas.

IV. Trabalhos Futuros

A equipe elenca duas notáveis possibilidades de futuros trabalhos em cima do atual jogo:

  • Implementação de interface gráfica, tornando o jogo mais lúdico e de fácil utilização;
  • Possiblitar partidas com mais de dois jogadores, aumentando o nível de entretenimento do jogo.

Além disso, a correção das fragilidades elencadas no tópico anterior também configuram possíveis trabalhos futuros para este projeto.

Fontes

  • Videoaulas e materiais de estudo disponibilizados pela professora Milene Serrano.

About

Projeto para a disciplina de Paradigmas de Programação da Unb, com o foco na criação de um jogo da memória utilizando programação funcional em Haskell

Resources

Stars

Watchers

Forks