Esse projeto foi desenvolvido para a disciplina de Tópicos em Computação 2020 (SEM0580), fornecida pela Escola de Engenharia de São Carlos (EESC-USP).
O objetivo era construir uma versão simplifcada do famoso jogo Campo Minado, aplicando todos os conceitos aprendidos durante o semestre.
Todo o programa foi desenvolvido em C++. Para facilitar a nossa organização, utilizamos arquivos .h separando em classes para facilitar na hora de referenciar as funções utilizadas ao longo do programa.
Além disso, todo o projeto foi executado utilizando a IDE CLion.
Todas as tarefas e funcionalidades foram mapeadas utilizando a metodologia ágil Kanban. Os cards utilizados para mapear tudo o que precisávamos fazer podem ser encontrados no ambiente de projetos do GitHub para esse repositório.
Todo o programa é baseado na navegação pelas setas do teclado, tanto para selecionar as células do campo minado quanto para navegar pelos menus de setinha.
Nenhuma outra entrada do usuário é necessária.
O objetivo do jogo é descobrir todas as casas do campo sem pisar em uma das 12 minas espalhadas aleatóriamente.
Utilizando as setas para cima e para baixo o usuário primeiramente selecionará a linha que deseja. Quando estiver satisfeito, pressionará enter para prosseguir.
Após a primeira seleção, ele será informado para selecionar a coluna que deseja, apertando enter quando quiser também.
Em todo o processo a linha/coluna em questão estará destacada em amarelo.
Após esse prcesso um menu aparecerá para o usuário falar o que ele deseja fazer. As opções são
- Pisar = poderão ocorrer duas coisas:
- Caso ele pise numa casa sem mina, será mostrada a quantidade de minas que existem ao redor daquele ponto (na região 3x3 com essa casa no centro). Se forem encontradas nessa região, será mostrado um número correspondente à quantidade (de 1 até 8). Se nenhumma, um ponto sera colocado (.);
- Caso ele pise numa casa com mina, o jogo encerrará.
- Marcar = o usuário colocará uma marcação especial nessa casa. Essa funcionalidade é boa para marcar possíveis localizações das minas. Ela não interfere em nada no jogo, só serve como ponto de referência para o jogador;
- Cancelar = cancela a seleção atual.
O jogo pode acabar de duas formas:
- O usuário pise em uma casa com mina;
- O usuário descubra todas as 88 casas sem pisar em nenhuma mina.
De qualquer forma, é sempre mostrada a pontuação máxima que ele atingiu na rodada. Tal pontuação é baseada na quantidade de casas descobertas corretamente (as marcações não interferem em nada na pontuação).
Bom jogo!