Nim é um gênio que perdeu todos os seus desejos para o mercado financeiro, agora ele só tem moedas. Porém, ele está disposto a da-las para você caso você seja bom o suficiente para vencê-lo no jogo dele.
/}
./`|´\
|_~?¬_`\
¬^Ö `>/
~~~ /_
- )¨/ ¨-
$$ ,-´ _ _ / \
$$ >-'´ ~`\_/ |
$$ ( _ .´ `-´ -´/
$$ @ `'´ `¬_ _//
$$ ( ) | ¨'¨_/
$$ /===\ \ /
$$ ,-`-._.-´¨¨¨¨ ¨¬_..---. \ |
$$ $$ $$ ((¨,¨\ ¨-._____.--¨ .¬--\..^, .,) /
$$ $$ $$ $$ \'-°^\:: / '{ 3 {¨.: /
$$ $$ $$ $$ \ _ / ¨~.´'y`,¨\~¨
$$ $$ $$ $$ $$ ¨¨\- -/¨¨ ¨¬.{ .3´
$$ $$ $$ $$ $$ _,-´ `-_ ¨
[--] [--] [--] [--] [--] `-------´
No jogo de nim várias moedas são distribuídas em pilhas diferentes, duas pessoas competem retirando entre 1 a 3 moedas por vez. O jogador que tirar a última moeda da última pilha ganha o jogo e fica com a última moeda
Este github é produto do projeto em grupo da matéria paradigmas de linguagens de programação. Ao longo do período esse jogo será desenvolvido por 5 pessoas em duas linguagens de programação com paradigmas diferentes
- haskell (paradigma funcional)
- prolog (paradigma logico)
A arquitetura e conexão entre os módulos da aplicação usada para basear a implementação está representada nesse fluxograma, definindo o que cada função/módulo faz e suas devidas entradas e saídas.
Link para o mapa: https://excalidraw.com/#json=cwhNg7nB5eGvZCaGwaVOZ,P9ILKHqmtWaUl6-FTzPr0g
- Azul = Funções de utilidades (Funções que printam na tela, retornam as pilhas feitas, retornam as dificuldades, não necessariamente possuem a lógica do jogo por trás);
- Amarelo = Funções de lógica do jogo (Funções que possuem a lógica do jogo por trás, onde o jogo acontece);
- Vermelho = Funções de validação de entrada (Funções que validam as entradas dos jogadores);
- Roxo = Funções das engines de bot (Funções que representam o bot e seus cálculos);
- Verde = Fluxograma do jogo (Caminhos que podem ser tomados).
- Preto = Textos de explicação da função (O que ela faz e como ela faz);
- Laranja = Textos de explicação da entrada da função (Variáveis, nomes e seus tipos);
- Verde = Textos de explicação da saída (Qual o tipo da saída e o que aquela saída representará no jogo).
Para conseguir executar o código em haskell é necessário baixar a biblioteca Random
cabal install --lib random
Após isso é possível jogá-lo sem nem precisar compilar, usando esse código dentro da pasta src:
runghc StartGame.hs
Para conseguir executar o código em Prolog é recomendável baixar a versão mais atualizada: Link para baixar: https://www.swi-prolog.org/download/stable
Após isso é possível jogá-lo sem nem precisar compilar, usando esse código dentro da pasta src:
swipl -q -f StartGame.pl
Nome | Matrícula | |
---|---|---|
Douglas Alves de Sousa | 121111728 | [email protected] |
Gabriel Pombo Almeida Cirne Diniz | 121111468 | [email protected] |
Guilherme Silva Toledo | 121110792 | [email protected] |
Jackson Alves da Silva Souza | 121110759 | [email protected] |
Mayara Brito Pinheiro | 121110615 | [email protected] |