Jogo Caça Minas
O jogo Caça Minas consiste em descobrir e marcar todas as minas
existentes em um campo minado.
Inicialmente todas as posições do campo minado estão escondidas, cabendo
ao jogador mostrar cada uma das posições ou marcar a existência de uma mina. Se
a posição for mostrada e nela houver uma mina, esta explode e o jogo termina.
Para auxiliar na identificação das minas, cada posição ao redor de uma
mina na horizontal, vertical ou diagonal contém uma marcação com um número, que
identifica quantas minas existem ao seu redor. As posições que não são vizinhas
a nenhuma mina não são marcadas com número, e quando são mostradas também
liberam a exibição das posições adjacentes sem marcação até que uma posição com
marcação seja encontrada.
O jogador vence o jogo quando marca corretamente todas as minas
existentes no campo minado. O número de marcações de minas deve ser exatamente
igual ao número de minas, se houver marcações extras estas devem ser eliminadas
para que o jogo seja concluído.
Questão: escrever
um programa em C que implemente o jogo Caça Minhas com console em modo texto. O
programa tem as seguintes características:
- o
campo minado possui tamanho configurável (máx. 40 linhas de largura por 20
de altura). O número de minas também é configurável (máx. 100 minas).
- as
minas são aleatoriamente distribuídas pelo campo minado no início de uma
partida.
- no
início, cada posição do campo deve possuir um caracter que indique que
aquela posição ainda não foi mostrada (sugestão: utilizar um caracter
pequeno que não “polua” muito o visual). Quando uma posição é
mostrada, nela é exibido um número (correspondendo a uma posição vizinha a
uma mina), um espaço vazio (se for uma posição não vizinha a uma mina) ou
um caracter qualquer para representar a mina. No último caso, o jogo
termina e todas a minas são reveladas ao jogador.
- o
jogador utiliza as setas do teclado para movimentar um cursor, que
representa a posição atual do percurso. Caso queira mostrar aquela posição
o jogador deve pressionar a tecla de espaço; caso queira marcar ou
desmarcar a existência de uma mina, deve pressionar a tecla X.
- o
jogo possui uma contagem de tempo regressiva, que inicia com um valor compatível
com o tamanho do campo minado e é congelada quando o jogador vence o jogo,
consistindo no seu escore. Se a contagem chegar a zero o jogo termina.
- o
jogo pode ser finalizado a qualquer momento pressionando-se a tecla
‘ESC’.
O programa deve ser implementado utilizando-se as seguintes regras de
estilo (para maiores informações, consultar o documento Regras de estilo para código fonte em linguagem C):
- identação
com tabulação de 3 caracteres (NÃO utilizar espaços para identar!).
- comentário
para os cabeçalhos de funções, conforme sugerido no documento acima
citado.
- comentários
para declarações de variáveis, estruturas de decisão e de repetição
explicando a sua finalidade e/ou funcionalidade.
- chaves
alinhadas utilizando uma das sugestões do documento acima citado.
- nomes
e números de matrícula dos participantes da equipe em forma de comentário
no início do programa.