Ir ao conteúdo

Posts recomendados

Postado

Olá, preciso desenvolver uma versão de campo minado, seguindo essas instruções https://docs.google.com/document/d/1aF2_p4jpKiO2GEX7fAseWxo1axzk7Kp-WxE7n2gr1pY/edit?usp=sharing, mas estou com problemas para verificar quando o jogador termina todas suas tentativas e para revelar as posições adjacentes . Até agora o código está assim, falta implementações ainda.

 

#include <stdio.h>

int main(int argc, char const *argv[])
{
    //lê quant de jogos
    int quant_jogos, TAM;
    printf("quantidade de jogos: ");
    scanf("%d", &quant_jogos);

    //lê tamanho da matriz quadrada
    printf("tamanho da matriz: ");
    scanf("%d", &TAM);

    char matriz[TAM][TAM];

    //conteudo do tabuleiro
    printf("conteudo da matriz:\n");

    for (int i = 0; i < TAM; i++)
    {
        for (int j = 0; j < TAM; j++)
        {
            scanf("%s", &matriz[i][j]);
        }
    }
    //le numero de jogada
    int x, y, jogada, aux = 0;
    printf("numero de jogada: ");
    scanf("%d", &jogada);

    while (1)
    {

        printf("posições x e y de cada jogada: ");
        scanf("%d %d", &x, &y);

        if (matriz[x][y] == 'x') /* Celula sem bomba */
        {
            aux++;
            if (aux == jogada)
            {
                for (int i = 0; i < TAM; i++)
                {
                    for (int j = 0; j < TAM; j++)
                    {
                        if (matriz[i][j] == 'x')
                        {
                            printf("GANHOU\n");
                            return 0;
                        }
                    }
                }
                //return 1;
            }

            if (aux > jogada)
            {
                printf("\nPERDEU\n");
                return 0;
            }
        }
        else if (matriz[x][y] == 'b') /* Celula com bomba */
        {
            printf("\nPERDEU\n");

            return 0; /* Fim de Jogo! */
        }
    }

    return 0;
}

 

  • Curtir 1
Postado

posso até estar falando bobagem, mas acho que você vai ter que ler a matriz testando com um desvio condicional pra ver se aquela linha da posição da matriz +1 e -1 da posição inserida pelo usuario tem minas, se não tiver você coloca um 0.

Já nas colunas complica mais um pouco por causa da diagonal, talvez se você usar o testar primeiro a linha e usar o resultado desse teste para testar as colunas dê certo.

Postado

Ajude alguém a ajudar você. Não poste um link para um enunciado de uma página. Poste o enunciado para que se possa ler sem sair do site.

 

Sobre seu programa

 

É só um loop para ler as jogadas, mas no fundo pode ler até resolver o jogo, trata-se de campo minado afinal. E você vai ler afinal o número de jogadas na primeira linha depois do tabuleiro.

 

Não escreva um programa interativo

 

Qual o propósito de usar um programa assim? Ler valores do teclado e não de uma arquivo, que é muito mais fácil de programar? Toda vez que vai testar o programa vai ficar mesmo com uma lista de movimentos? Notou seu enunciado?

Exemplo 1:

 

Entrada							Saída
1								GANHOU
4
b x x x
x x x x
x b x x
x x x x
8 			//: qtd de jogadas
1 3
3 3
3 1
3 0
0 1
1 1
1 0
2 0

 

Exemplo 2:

 

Entrada							Saída
1								PERDEU
4
b x x x
x x x x
x b x x
x x x x
3 			//: qtd de jogadas
1 3
3 3
2 1

 

E mais ainda:

Citação

Entrada: A entrada possui várias linhas, onde cada linha tem detalhes sobre o jogo

 

O enunciado AFINAL

 

O trabalho prático consiste na implementação desse jogo, que possui três regras principais:
1. Caso um quadrado com mina seja revelado, o jogador perde.
2. Caso um quadrado já revelado seja acionado, nada é feito.
3. Caso um quadrado sem mina seja revelado, o jogador continua jogando. Além disso,
todos os quadrados adjacentes ao quadrado acionado são revelados automaticamente
se e somente se todos os quadrados adjacentes não possuírem minas.
Para o jogo proposto neste trabalho,
somente os adjacentes serão revelados, não sendo necessário que os vizinhos dos
adjacentes também
sejam revelados caso não possuam minas.
O programa inicialmente deve ler as entradas contendo informações sobre o jogo e detalhes 
de cada jogada do jogador e imprimir um resultado na saída que indica se o jogador perdeu,
ganhou ou não terminou o jogo.
Entrada: A entrada possui várias linhas, onde cada linha tem detalhes sobre o jogo.

• A primeira linha possui a quantidade de jogos realizados por um jogador (1 ≤ 10);
• A segunda linha indica o tamanho do tabuleiro, que sempre é uma matriz quadrada
(2 ≤ 100);
• As linhas em seguida representam o conteúdo do tabuleiro, onde os valores são
separados por um espaço em branco. O valor (b) representa uma mina e (x) indica
um espaço vazio;
• Em seguida, é apresentado o número de jogadas que serão realizadas;
• Por fim, tem-se os valores referentes as posições x e y de cada jogada;
Saída: Ao fim da partida o programa deve imprimir (GANHOU) se todas os quadrados
sem minas forem revelados; (PERDEU) caso alguma mina for descoberta; (FALTOU TERMINAR) se
após todas as jogadas, nenhuma mina for descoberta e existirem quadrados
sem minas não revelados. 
Obs: As saídas do programa devem ser impressas exatamente como está descrito,
com letras maiúsculas.

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...