Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Descrição do jogo
O jogo de campo minado consiste em identificar a posição de uma certa quantidade conhecida
de minas em um campo (tabuleiro) de tamanho variado. Cada casa do tabuleiro contém uma mina
ou um número. Esse número indica quantas minas existem nas 8 casas vizinhas. Inicialmente, o
conteúdo das casas do campo está todo escondido (casas fechadas). O jogador deve pedir para abrir
uma casa de cada vez. Caso seja uma mina, ele perde o jogo. Caso seja um número, ele continua
a jogar, até que só existam casas fechadas contendo minas. O jogador também tem a possibilidade
de marcar uma casa como sendo uma mina. Essa informação não é verificada pelo jogo, ou seja,
a casa fica marcada e fechada independentemente de ser uma mina ou não (serve apenas para o
jogador se lembrar que não deve abrir aquela casa).
2. Especificação do projeto
O jogo que você deve implementar é uma versão simples de um jogo de campo minado, sem
sofisticações gráficas.
A cada jogada as seguintes ações devem ocorrer:
• O jogo pede ao jogador uma nova jogada (explicando na mensagem a sintaxe esperada para
a entrada do jogador). Exemplo: “Digite três informações separadas por vı́rgula: Linha da
casa (1 a 8), coluna da casa (1 a 8) e se é pra cavar ou abrir (0 pra cavar, 1 para abrir)”
• O jogador fornece uma posição e indica se é para cavar (abrir a casa) ou apenas sinalizar
como mina, seguindo a sintaxe especificada.
• O programa valida os dados fornecidos pelo jogador (por exemplo, as coordenadas da casa
devem ser números de 1 até o tamanho do lado do tabuleiro). Caso o dado seja inválido,
avisa ao jogador e pede que o mesmo forneça novo dado.
• O programa abre ou marca a casa escolhida.
– Caso o jogador tenha pedido para marcar a casa, o campo é mostrado mais uma vez
com uma indicação de que a casa correspondente está marcada, e uma nova jogada
começa.
– Caso o jogador tenha pedido para abrir a casa e a casa contenha uma mina, o jogo
termina com um Boom!
– Caso o jogador tenha pedido para abrir uma casa sem mina, o campo é mostrado mais
uma vez com a nova casa aberta, e uma nova jogada começa.
Se o jogador conseguir completar o jogo, dá uma mensagem de parabéns.
Dica para ficar mais bonitinho: Você pode usar o caractere \u2705 (unicode) para marcar
uma casa onde o jogador acha que tem uma mina. Experimente dar print(’\u2705’) no shell
1
2 AVALIAÇÃO PRÁTICA - COMP1 IMPLEMENTAÇÃO DO JOGO CAMPO MINADO
para ver o que aparece. E pode pesquisar outros códigos para usar outros sı́mbolos, se quiser, no
site https://unicode-table.com/pt/blocks/
DICA (não é obrigatório, mas pode ajudar): Para espalhar as minas é necessário saber quais
casas estão ainda livres. É útil ter uma variável na função inicializa jogo que mantém o registro
de que posições estão livres no momento de sortear a posição de uma nova mina. Caso contrário,
você pode perder tempo sorteando casas ocupadas, só para perceber depois que aquela casa não
servia (não é muito eficiente, né?). Essa informação pode ser armazenada em uma lista de pares,
inicialmente, contendo n2 elementos (as coordenadas de todas as posições da matriz). Você pode
criar essa lista na mesma função que cria o campo e/ou a máscara, ou pode ter uma função só para
criá-la.