Escolar Documentos
Profissional Documentos
Cultura Documentos
do Vale do Itajaí
Escola do Mar, Ciência e Tecnologia
NID (Núcleo Integrado de Disciplinas)
Algoritmos e Programação(22760)
Definição do trabalho da M3
Campo Minado
Visão Geral:
Campo minado é um popular jogo de computador para um jogador. Foi inventado por Phil Spencer
em 1989 e tem como objetivo revelar um campo de minas sem que alguma seja detonada. Este jogo tem
sido reescrito para as mais diversas plataformas, sendo a sua versão mais popular a que vinha
nativamente nas edições anteriores ao Windows 10.
Descrição
A área de jogo consiste num campo de quadrados retangular. Cada quadrado pode ser revelado
clicando sobre ele, e se o quadrado clicado contiver uma mina, então o jogo acaba. Se, por outro lado, o
quadrado não contiver uma mina, uma de duas coisas poderá acontecer:
• Um número aparece, indicando a quantidade de quadrados adjacentes que contêm minas;
• Nenhum número aparece, indicando que não há nenhuma mina adjacente ao quadrado escolhido;
O jogo é ganho quando todos os quadrados que não têm minas são revelados.
• Sempre que colocar uma bomba utilize laço de repetição para somar em um a quantidade de bombas nas
posições adjacentes, isso vai garantir que o mapa indique a quantidade de minas próximas corretamente, por
exemplo:
x
x 1
1 1
x 1
1 x
x 2 1
2 x 1
1 1 1
Mapa após indicar o número de bombas adjacentes nas posições vizinhas
• Antes de cada jogada, deve-se exibir o mapa, somente com todas as posições já reveladas pelo jogador.
• O jogo deve garantir que o jogador escolha uma coordenada válida. Recomenda-se que essas coordenadas
sejam exibidas junto com o mapa.
0 1 2
A
B
C
Informe uma linha: ...
Informe uma coluna: ...
• O jogo deve encerrar quando uma mina for selecionada ou quando todas as posições livres do mapa forem
reveladas. Dica: O número de posições livres é igual ao número de posições do mapa menos o número de
minas.
• O jogo deve indicar se o jogador venceu ou perdeu e o número de jogadas válidas feitas por ele. Dica: utilize
um contador para somar cada vez que uma posição nova for escolhida e lembre-se de não contar se for uma
mina.
Dicas de desenvolvimento:
O código, a seguir, exemplifica o uso das funções rand() e srand();
• rand() gera um número pseudo-aleatório entre 0 e RAND_MAX, mas essa faixa pode ser facilmente
alterada com o operador de resto da divisão inteira.
• srand() gera uma nova semente aleatória baseada no parâmetro passado entre os parênteses da
função. É comum utilizar a função time(), pois ela pega o horário do sistema que muda a cada
milésimo de segundo. Note que se a função srand() não for utilizada a sequência de números
pseudo-aleatórios gerados pela função rand() será sempre a mesma.
Outros dois comandos bastante úteis no desenvolvimento de programas no console, são os comandos
system(“cls”) e system(“pause”).
• system(“cls”) é um comando que limpa a tela do console (clear screen). Esse comando é bastante
útil, pois em uma tela limpa é mais fácil dar destaque aquilo que se está mostrando no momento.
• system(“pause”) é um comando útil, principalmente quando usado em conjunto com o
system(“cls”), pois ele pausa a execução da aplicação até que o usuário aperte qualquer tecla,
bastante útil quando se quer exibir algo antes de limpar a tela para iniciar uma nova execução.
Obs.: Para o desenvolvimento do código não poderão ser utilizadas funções ou structs.
Defesa (Obrigatória)
Durante a defesa serão realizados questionamento sobre o trabalho realizado pelo grupo. A
defesa é obrigatória e deverá ser feita pelos integrantes do grupo na aula. Se algum integrante
não estiver presente durante a aula de defesa, deverá justificar a falta, o mesmo defenderá
posteriormente em data a ser agendada com o professor.
Entregas:
Obs.: Todas as notas relativas ao código dependem do desempenho na defesa. Sem a defesa o
trabalho terá nota ZERO.