A aplicação-base para o trabalho é uma implementação em Javascript do tradicional jogo Snake. A codificação segue o Paradigma Funcional.
O jogo consiste de uma "cobra", controlada pelo usuário através do teclado, que se movimenta sem interrupção em quatro possíveis direções: Norte, Sul, Leste, Oeste. Existe uma "maçã" que aparece aleatoriamente na tela e, ao comê-la, a cobra cresce de tamanho.
Esta implementação apresenta duas versões de interface: (i) console e (ii) web (com HTML Canvas).
base.js, snake.js e cli.js. Para executar o jogo, basta abrir um terminal (pode ser no próprio VSCode) e digitar o comando node cli + ENTER.base.js, snake.js e web.js (além, naturalmente, dos arquivos HTML e CSS para a interface: web.html e web.css). Para executar o jogo, basta clicar duas vezes no arquivo web.html.Primeiramente, a equipe deverá decidir a versão que deseja trabalhar: console ou web.
Então, de posse dos arquivos respectivos, a equipe deverá cumprir 3 tarefas, conforme descrito a seguir.
A equipe deverá manter todos os arquivos de sua solução dentro de uma pasta chamada snake e compactar esta pasta em snake.zip. A seguir, um ÜNICO INTEGRANTE da equipe deverá realizar upload no CLASSROOM desse arquivo zip.
⚠️ Nunca é demais lembrar que, na implementação das novas dinâmicas de jogo, o uso de construções que firam o paradigma funcional estão sujeitas a penalizações severas (exceção é feita ao controle do Estado de jogo que, de fato, trata-se de um elemento mutável e, assim, deve permanecer).
TODAS AS EQUIPES devem fazer o upload do arquivo snake.zip até às 14h59 do dia 24/05/2022.
⚠️ Envios de arquivo realizados diretamente por e-mail, sob qualquer justificativa, serão sumariamente IGNORADOS. Os envios devem ser feitos EXCLUSIVAMENTE pelo Google Classroom da turma.
Os dois arquivos compactados a seguir, disponíveis para download são soluções para o trabalho proposto. As soluções foram desenvolvidas por duas equipes diferentes de uma das turmas da disciplina de Programação Funcional do DCOMP/UFS no período 2021.2.
Recomenda-se tentar resolver o problema antes de visitar essas soluções. Ainda que tome-se conhecimento das soluções disponíveis, recomenda-se realizar modificações e testes nas variadas funções para experimentar e treinar alternativas interessantes.