programação
Entrega: 06/07/2013
1
Introdução
No jogo campo minado, o objetivo é encontrar todas as q minas escondidas em um campo de m por n casas. A cada rodada, o jogador pode marcar uma casa como vazia (o equivalente a pisar em uma casa), como mina ou como dúvida. A única forma de perder o jogo é marcando uma casa que contém uma mina como vazia. O jogador vence quando marcar todas as casas que não contém minas como vazias e todas as casas minadas como tais.
O objetivo do presente projeto é implementar em C uma versão em modo texto do campo minado.
2
2.1
Regras do jogo
Inicialização
Antes de começar o jogo propriamente dito, o usuário fornecerá três inteiros que determinarão o número de linhas, de colunas e de minas no campo. O programa deveria testar a validade da entrada, isto é: se os três números foram lidos corretamente (utilize o valor de retorno da função scanf() para verificar isso), se os três números são positivos e se o número de minas é menor ou igual ao número de casas.
Assim que o programa receber um tamanho de jogo válido, ele escolhe as posições das minas nas casas ao acaso, de forma que no final exatamente q minas estejam presentes no campo.
2.2
Fazendo as jogadas
Finalmente, após o campo estar minado apropriadamente, o jogo começa. A cada rodada o jogador fornecerá dois números inteiros i e j e um caractere c. Uma jogada válida é tal que i ∈ {0, . . . , m−1}, j ∈ {0, . . . , n−1} e c ∈ {
’v’ , ’m’ , ’d’ }.
Além disso, a jogada (i, j, c) é válida somente se a casa (i, j) ainda não está marcada como vazia. O programa deveria testar para verificar se a jogada é válida e repetir a leitura até que uma jogada válida seja fornecida.
Mais uma vez, utilize o valor de retorno de scanf() para testar se a leitura foi bem sucedida. Após a tentativa de leitura com scanf(), bem sucedida essa ou
1
não, você deve utilizar o comando while( getchar() != ’\n’ ); para limpar os caracteres deixados