CÉLEREBRO é um minigame que desenvolvi para praticar o conteúdo de programação que estava aprendendo na faculdade - e também porque gosto muito de jogos “neuróbicos”.
Tentei utilizar ao máximo diversos recursos que a poderosa linguagem C oferece, como estruturas de dados, alocação dinâmica, ponteiros, ordenação e manipulação de arquivos.
Com quase todo o sistema modelado, não gostei dos resultados da função geradora de números aleatórios. Por isso, decidi (re)começar praticamento do zero, utilizando outro método para tornar cada operação o mais esporádica possível. Para tal, fiz o uso de listas encadeadas e conceitos de produto cartesiano.
Muitas vezes, debugá-lo foi um desafio, pois não é fácil indentificar um erro de semântica, mas, graças ao gdb, corrigi vários problemas de segmentation fault. Apesar dos meus testes, pode ser que existam outros bugs que deixei passar.
Uma vez com o gcc instalado, é só abrir o terminal na pasta codigo, onde se encontra o arquivo Makefile, e digitar o comando make
. Assim, todos os módulos serão carregados.
Para rodar o executável gerado, basta digitar o comando ./main.x
.
Quem quiser ir além (no Linux)...
Para criar um comando para executar o jogo direto no terminal, de forma global:
1 - Criar um script com nome celerebro na pasta codigo com as seguintes linhas de comando:
#!/bin/bash
cd <endereço onde se encontra o ./main.x>
./main.x
Por exemplo:
#!/bin/bash
cd /home/danielbrito/games/celerebro/codigo
./main.x
2 - Copiar (ou mover) o script criado para a devida pasta:
sudo cp celerebro /usr/bin/
3 - Autorizar execução via linha de comando:
sudo chmod +x /usr/bin/celerebro
Pronto! Agora é só digitar o comando celerebro
de qualquer diretório que o programa será executado.
A tela de apresentação, bem como as outras "ilustrações" do jogo, foram todas geradas por um programa cujo algoritmo converte pixels em caracteres da tabela ASCII.
Após teclar ENTER, será exibido o menu principal, onde existem as opções de começar uma nova partida, verificar ranking, ler sobre neuróbica ou sair.
A opção principal é a "1 - Nova partida", pois ela leva a uma série de configurações que serão aplicadas nas operações a serem resolvidas, como tipo (adicão, subtração etc.), nível (fácil, médio, difícil etc.), bem como a quantidade de operações a serem respondidas.
Após o início da partida, as operações aparecem na tela e um cronômetro (em background) contabiliza o tempo.
Ao final, é exibido o resultado juntamente com uma lista de opções sobre o que fazer a seguir. Jogar novamente? Voltar ao menu? Exibir os erros? (Se houverem) Exibir ranking?
Se a opção escolhida for "Sair", é exibida uma tela de despedida com um incentivo para retornar uma próxima vez.
Para modificar o intervalo dos números em cada nível é só alterar os valores dos #define
no arquivo operacao.c.
Confira o screencast neste vídeo que gravei para o meu canal.