Ir ao conteúdo
  • Cadastre-se
Emerson Chou

Seria possivel resolver pra min

Recommended Posts

Gostaria de pedir um favor se poderia mudar os codigo do C++ para C que eu nao estou conseguindo do jogo .... obrigadoo! 

 

                                  -- Observações --

 * O uso do loop do while mantém uma estética lógica mais firme ao código, um exemplo disto
 é o fato de que o void embaralha, responsável pela indexação dos valores às cartas, é executado
 antes mesmo da construção visual do tabuleiro;

 * Até hoje (25/04) o item a) do TDE -- onde requisitava que fosse possível o usuário entrar
 com o tamanho do tabuleiro e este ser gerado de maneira dinâmica -- não consta no trabalho,
 será apresentado ao professor Alceu e requisitado seu auxílio para o desenvolvimento de tal
 funcionalidade. */
 

using namespace std;
int main()
{
    char virgula, resp = 'y'; // char vírgula é um fix
    int r1, c1, r2, c2, cartas[4][4], i(0); // r e c correspondem as linhas e colunas, coordenadas das cartas
    bool selecionadacarta[4][4];  // A escolha do vetor como bool mantém um padrão, o selecionadacarta define se a carta foi encontrada ou não
    bool gameover = false; // enquanto for true, jogo continua, quando for false, termina
    int jogadas; // contador
    do
    {

        void embaralha(int[][4]);

        jogadas = 0; // Reseta o contador de jogadas
        embaralha(cartas);     // Chama o método de embaralhar cartas

        // Início do design do indicador de colunas //
        cout << "    1 2 3 4\n"; // Imprime a numeração das colunas
        cout << "  "; // Ajuste na separação da numeração
        for (int i = 0; i <= 8; i++)
        {
            cout << "-"; // Design da divisória
        }
        cout << endl; // endl insere nova linha

        // Fim do design do indicador de colunas //

        // Início do design do indicador de linhas //
        for (int r = 0; r<4; r++)
        {
            cout << r + 1 << " | "; // Imprime a numeração das linhas
            for (int c = 0; c<4; c++)
            {
                cout << "* "; // Imprime as cartas não reveladas
                selecionadacarta[r][c] = false; // Já prepara um outro array com cada posição do tabuleiro
            }
            cout << endl;
        }
        // Fim do design do indicador de linhas //

        cout << endl;

        do
        {
            do
            {
                cout << "Insira a linha,coluna da primeira carta desejada. \n";
                cin >> r1 >> virgula >> c1;
                if (selecionadacarta[r1 - 1][c1 - 1] == true) // Verifica se a carta está virada
                {
                    cout << "Esta carta ja esta virada! Selecione outra! \n";
                }
            } while (selecionadacarta[r1 - 1][c1 - 1] != false);
            do
            {
                cout << "Insira a lina,coluna da segunda carta desejada. \n";
                cin >> r2 >> virgula >> c2;
                if (selecionadacarta[r2 - 1][c2 - 1] == true)
                {
                    cout << "Esta carta ja esta virada! Selecione outra! \n";
                }
                if ((r1 == r2) && (c1 == c2))
                {
                    cout << "voce nao pode virar a mesma carta novamente!";
                    continue;
                }
            } while (selecionadacarta[r2 - 1][c2 - 1] != false);
            
            r1--;
            c1--;
            r2--;
            c2--;

            // Início da repetição do design com a(s) carta(s) encontrada(s) //
            cout << "    1 2 3 4\n";
            cout << "  ";
            for (int i = 0; i <= 8; i++)
            {
                cout << "-";
            }
            cout << endl;

            for (int r = 0; r<4; r++)
            {
                cout << r + 1 << " | ";
                for (int c = 0; c<4; c++)
                {
                    if ((r == r1) && (c == c1))
                    {
                        cout << cartas[r][c] << " "; // Se encontrou, imprime a primeira
                    }
                    else if ((r == r2) && (c == c2))
                    {
                        cout << cartas[r][c] << " "; // Se encontrou, imprime a segunda
                    }
                    else if (selecionadacarta[r][c] == true)
                    {
                        cout << cartas[r][c] << " ";
                    }
                    else
                    {
                        cout << "* "; // Nada? Mantém igual
                    }
                }
                cout << endl;
            }
            // Fim da repetição do design com a(s) carta(s) encontrada(s)//

            //Faz a verificação se o par foi encontrado ou não
            if (cartas[r1][c1] == cartas[r2][c2])
            {
                cout << "Par Encontrado! Pressione ENTER" << endl;

                selecionadacarta[r1][c1] = true; //Carta 1 do par
                selecionadacarta[r2][c2] = true; //Carta 2 do par
            }else{
                cout << "Nao forma um par! Tente novamente";
            }
            cin.get();
    
            //Finaliza a primeira tentativa
            
            // Da um espaço de 5 linhas
            for (int i = 0; i<5; i++){
                cout << endl;
            }
            
    
            // Início da repetição do design //
            cout << "    1 2 3 4\n";
            cout << endl;
            for (int r = 0; r<4; r++)
            {
                cout << r + 1 << " | ";
                for (int c = 0; c<4; c++)
                {
                    if (selecionadacarta[r][c] == true)
                    {
                        cout << cartas[r][c] << " ";
                    }
                    else
                    {
                        cout << "* ";
                    }
                }
                cout << endl;
            }
            // Fim da repetição do design //
            
            gameover = true; // Mantém o jogo rodando, quando for false o jogo termina
            
            // Faz a verificação se todas as 16 cartas foram descobertas
            for (int r = 0; r<4; r++)
            {
                for (int c = 0; c<4; c++)
                {
                    if (selecionadacarta[r][c] == false)
                    {
                        gameover = false; // Termina o jogo
                        break;
                    }
                }
                if (gameover == false)
                {
                    break;
                }
            }
            
            jogadas++; // Contador de jogadas
            
             // DAQUI PRA FRENTE, REPETE //
             
        } while (gameover != true); // Aqui define-se o loop até que o jogo acabe
        cout << "voce ganhou!!!" << endl;
        cout << jogadas << " jogadas ate a vitoria." << endl << endl;
        cout << "Jogar novamente? (s=Sim/n=Nao) : ";
        resp = cin.get();
    } while (resp == 's' || resp == 'S'); // Verifica se o jogador quer jogar novamente
    cin.get();
    return 0;
}
void embaralha(int carta[][4]) // Embaralha as cartas, atribuindo valores ao tabuleiro de forma aleatória, mas mantendo pores.
{
    int start[16] = { 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8 }; // Montagem do array fixo do tabuleiro
    for (int s = 0; s <= 20; s++) // Loop pelos possíveis pares
    {
        for (int x = 0; x<16; x++)
        {
            srand((unsigned)time(NULL));
            int i = rand() % 15 + 1; // Define i aleatório
            int temp = start[x]; 
            start[x] = start; // troca
            start = temp; // segura o valor da carta em si
        }
    }
    int i = 0;
    for (int r = 0; r<4; r++) // Este loop define o valor para a carta
    {
        for (int c = 0; c<4; c++)
        {
            carta[r][c] = start; // 
            //cout << cards[r][c]; <-- Tirar o comentário para imprimir todas as cartas do tabuleiro antes do tabuleiro em si!
            i = i + 1;
        }
        cout << endl;
    }
}

 

Obrigado >_<

Editado por Simon Viegas
Ao postar um código, antes pressione o botão "<>" na barra de ferramentas
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Emerson Chou, por favor, edite sua postagem, remova esse código, e insira o código original dentro da tag CODE (clique no botão <>, e na caixa que irá abrir, cola o código).

 

 

Então, eu não entendi muito bem as observações... em qual parte não está conseguindo traduzir de uma linguagem para outra e em qual contexto seria essa tradução?

 

No aguardo.

Editado por Simon Viegas
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Emerson Chou      esse código não está funcionando, nem no c e nem no c++

pois tem erro na linha 184 e 185 onde se faz referencia a um vetor sem especificar

a posição desse vetor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero mudar todos os codigo cout << (alguma coisa) para printf, porém eu nao estou compreendo quando por exemplo a linha 157 quando cout << cartas [r][c] << "  ";  ou a linha 66   cin >> r1 >> virgula >> c1; para passar em C ansi como deve ser colocado no lugar.

Editado por Emerson Chou
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Emerson Chou     no lugar de   cout << cartas [r][c] << "  ";   você pode colocar

printf ( " %d ",cartas[r] [c] ) ;   note que tem um espaço depois do %d   .

e no lugar de     cin >> r1 >> virgula >> c1;   você pode colocar

scanf ( " % i % c % i " , r1 , virgula ,c1 ) ;   aqui os % i  e % c  e  % i  é deacordo

com  as variáveis se é int ou char .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Emerson Chou     para converter de c++ para c e continuar usando essas variáveis booleana é preciso colocar  esse trecho de código aqui no começo do programa logo depois dos includes :

/*// Criando a enumeração:*/
enum boolean {
    true = 1, false = 0
};
/*// Permitindo a sua declaração como um tipo qualquer:*/
typedef  enum boolean  bool;
/*// Agora podemos escrever e compilar os códigos usando bool*/

 

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×