Ir ao conteúdo

Posts recomendados

Postado

1. CÓDIGO C INCOMPLETO
 

#include < stdio.h >
 int main (void) {
     char ________________________;                                          // Declaração da matriz para o jogo
     char O = 'O', X = 'X';
     int jogadas = 0, j, i;

     ______________________                                                       // Inicialização da matriz do jogo
         _____________________________
             ______________________________

     while (l <= 9) {
         printf ("  JOGO DA VELHA \n");
         for (i = 0; i < 3; i++) {
             printf ("\t\t     %c | %c | %c\n",Matriz [0], Matriz [1], Matriz [2]);
             if (i < 3-1)
                 printf ("\t\t    ---+---+---  \n");
         }

         printf ("\nINSIRA AS COORDENADAS, ");
         if (l % 2)
               printf ("JOGADOR 2\nLINHA: ");
         else
               printf ("JOGADOR 1\nLINHA: ");
         scanf ("%d",&i);
         printf ("COLUNA: ");
         scanf (________________);                                                // Parâmetros para entrada de dados da coluna

         if (Matriz [i-1] [j-1] == ' ') {
             if (l%2)
                   Matriz [i-1] [j-1] = X;
             else
                   Matriz [i-1] [j-1] = O;
             jogadas++;
         }

         if ((Matriz[0][0]==O && Matriz[0][1]==O && Matriz[0][2]==O) ||
            (Matriz[1][0]==O && Matriz[1][1]==O && Matriz[1][2]==O) ||
            (Matriz[2][0]==O && Matriz[2][1]==O && Matriz[2][2]==O) ||
            (Matriz[0][0]==O && Matriz[1][0]==O && Matriz[2][0]==O) ||
            (Matriz[0][1]==O && Matriz[1][1]==O && Matriz[2][1]==O) ||
            (Matriz[0][2]==O && Matriz[1][2]==O && Matriz[2][2]==O) ||
            (Matriz[0][0]==O && Matriz[1][1]==O && Matriz[2][2]==O) ||
            (Matriz[0][2]==O && Matriz[1][1]==O && Matriz[2][0]==O))
         {
             printf("\n\a\t\tJogador 1, VOCÊ VENCEU!!!\n");
             break;
         }
         if ((Matriz[0][0]==X && Matriz[0][1]==X && Matriz[0][2]==X) ||
            (Matriz[1][0]==X && Matriz[1][1]==X && Matriz[1][2]==X) ||
            (Matriz[2][0]==X && Matriz[2][1]==X && Matriz[2][2]==X) ||
            (Matriz[0][0]==X && Matriz[1][0]==X && Matriz[2][0]==X) ||
            (Matriz[0][1]==X && Matriz[1][1]==X && Matriz[2][1]==X) ||
            (Matriz[0][2]==X && Matriz[1][2]==X && Matriz[2][2]==X) ||
            (Matriz[0][0]==X && Matriz[1][1]==X && Matriz[2][2]==X) ||
            (Matriz[0][2]==X && Matriz[1][1]==X && Matriz[2][0]==X))
         {
             printf ("\n\n\n\n\a\t\tJogador 2, VOCÊ VENCEU!!!\n");
             break;
         }

         if (__________________________) {                                            // Condição para que a partida termine empatada
             printf ("PARTIDA EMPATADA");
             break;
         }
     }
     return (0);
 }

 

  • Amei 1
  • Membro VIP
Postado

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Postado

@patricia weber  1) Comece declarando as variáveis: Matriz e l.

 

Para declarar uma variável coloque o tipo e o nome, p.ex,

 

int teste;

char Tabela[3][3];

Acima declarei duas variáveis, uma inteira e uma matriz/array 3x3.

 

2) Inicie os valores da matriz, veja que tem três linhas para isso. Iniciar significa atribuir valores (caractere em branco) a cada posição. Para isso use dois loops/For.

 

3) O parâmetro de scanf é igual ao scanf logo acima, mas com a variável j.

 

4) Incremente l e compare a condição de empate.

 

Assim já dá para testar o código e depois acertar outras partes.

 

  • Curtir 1
  • Amei 1
Postado

@patricia weber A partida termina em empate quando o número de jogadas chega a nove sem um vencedor.

 

Verificando melhor o código vi que a variável l é desnecessária, basta a variável jogadas.

 

Acho que a variável l está aí para ser substituída pela variável jogadas.

 

Para verificar se houve empate é só comparar,

 

if(jogadas==9){
printf ("PARTIDA EMPATADA");
break;
}

 

  • Curtir 1
  • Amei 1
Postado

#include < stdio.h >
 int main (void) {
     char Matriz [3] [3];           // Declaração da matriz para o jogo
     char O = 'O', X = 'X';
     int jogadas = 0, j, i;

     for(i=0;i<3;i++){                   // Inicialização da matriz do jogo
         for(j=0;j<3;j++){
             jogo[j]=''
     while (l <= 9) {
         printf ("  JOGO DA VELHA \n");
         for (i = 0; i < 3; i++) {
             printf ("\t\t     %c | %c | %c\n",Matriz [0], Matriz [1], Matriz [2]);
             if (i < 3-1)
                 printf ("\t\t    ---+---+---  \n");
         }

         printf ("\nINSIRA AS COORDENADAS, ");
         if (l % 2)
               printf ("JOGADOR 2\nLINHA: ");
         else
               printf ("JOGADOR 1\nLINHA: ");
         scanf ("%d",&i);
         printf ("COLUNA: ");
         scanf ("%d",&j);               // Parâmetros para entrada de dados da coluna

         if (Matriz [i-1] [j-1] == ' ') {
             if (l%2)
                   Matriz [i-1] [j-1] = X;
             else
                   Matriz [i-1] [j-1] = O;
             jogadas++;
         }

         if ((Matriz[0][0]==O && Matriz[0][1]==O && Matriz[0][2]==O) ||
            (Matriz[1][0]==O && Matriz[1][1]==O && Matriz[1][2]==O) ||
            (Matriz[2][0]==O && Matriz[2][1]==O && Matriz[2][2]==O) ||
            (Matriz[0][0]==O && Matriz[1][0]==O && Matriz[2][0]==O) ||
            (Matriz[0][1]==O && Matriz[1][1]==O && Matriz[2][1]==O) ||
            (Matriz[0][2]==O && Matriz[1][2]==O && Matriz[2][2]==O) ||
            (Matriz[0][0]==O && Matriz[1][1]==O && Matriz[2][2]==O) ||
            (Matriz[0][2]==O && Matriz[1][1]==O && Matriz[2][0]==O))
         {
             printf("\n\a\t\tJogador 1, VOCÊ VENCEU!!!\n");
             break;
         }
         if ((Matriz[0][0]==X && Matriz[0][1]==X && Matriz[0][2]==X) ||
            (Matriz[1][0]==X && Matriz[1][1]==X && Matriz[1][2]==X) ||
            (Matriz[2][0]==X && Matriz[2][1]==X && Matriz[2][2]==X) ||
            (Matriz[0][0]==X && Matriz[1][0]==X && Matriz[2][0]==X) ||
            (Matriz[0][1]==X && Matriz[1][1]==X && Matriz[2][1]==X) ||
            (Matriz[0][2]==X && Matriz[1][2]==X && Matriz[2][2]==X) ||
            (Matriz[0][0]==X && Matriz[1][1]==X && Matriz[2][2]==X) ||
            (Matriz[0][2]==X && Matriz[1][1]==X && Matriz[2][0]==X))
         {
             printf ("\n\n\n\n\a\t\tJogador 2, VOCÊ VENCEU!!!\n");
             break;
         }

         if (jogadas==9) {         // Condição para que a partida termine empatada
             printf ("PARTIDA EMPATADA");
             break;
         }
     }
     return (0);

}
 

  • Curtir 1
Postado

Procure postar seu código dentro daquele formulário code usando o botão "<>" na tela, ou partes dele podem se perder e assim fica difícil para alguém importar em seu computador e testar...

adicionado 0 minutos depois

o que é jogo[ ] ?

  • Curtir 1
Postado
#include < stdio.h >
 int main (void) {
     char Matriz [3] [3];           // Declaração da matriz para o jogo
     char O = 'O', X = 'X';
     int jogadas = 0, j, i;

     for(i=0;i<3;i++){                   // Inicialização da matriz do jogo
         for(j=0;j<3;j++){
             jogo[i][j]=''
     while (l <= 9) {
         printf ("  JOGO DA VELHA \n");
         for (i = 0; i < 3; i++) {
             printf ("\t\t     %c | %c | %c\n",Matriz [0], Matriz [1], Matriz [2]);
             if (i < 3-1)
                 printf ("\t\t    ---+---+---  \n");
         }

         printf ("\nINSIRA AS COORDENADAS, ");
         if (l % 2)
               printf ("JOGADOR 2\nLINHA: ");
         else
               printf ("JOGADOR 1\nLINHA: ");
         scanf ("%d",&i);
         printf ("COLUNA: ");
         scanf ("%d",&j);               // Parâmetros para entrada de dados da coluna

         if (Matriz [i-1] [j-1] == ' ') {
             if (l%2)
                   Matriz [i-1] [j-1] = X;
             else
                   Matriz [i-1] [j-1] = O;
             jogadas++;
         }

         if ((Matriz[0][0]==O && Matriz[0][1]==O && Matriz[0][2]==O) ||
            (Matriz[1][0]==O && Matriz[1][1]==O && Matriz[1][2]==O) ||
            (Matriz[2][0]==O && Matriz[2][1]==O && Matriz[2][2]==O) ||
            (Matriz[0][0]==O && Matriz[1][0]==O && Matriz[2][0]==O) ||
            (Matriz[0][1]==O && Matriz[1][1]==O && Matriz[2][1]==O) ||
            (Matriz[0][2]==O && Matriz[1][2]==O && Matriz[2][2]==O) ||
            (Matriz[0][0]==O && Matriz[1][1]==O && Matriz[2][2]==O) ||
            (Matriz[0][2]==O && Matriz[1][1]==O && Matriz[2][0]==O))
         {
             printf("\n\a\t\tJogador 1, VOCÊ VENCEU!!!\n");
             break;
         }
         if ((Matriz[0][0]==X && Matriz[0][1]==X && Matriz[0][2]==X) ||
            (Matriz[1][0]==X && Matriz[1][1]==X && Matriz[1][2]==X) ||
            (Matriz[2][0]==X && Matriz[2][1]==X && Matriz[2][2]==X) ||
            (Matriz[0][0]==X && Matriz[1][0]==X && Matriz[2][0]==X) ||
            (Matriz[0][1]==X && Matriz[1][1]==X && Matriz[2][1]==X) ||
            (Matriz[0][2]==X && Matriz[1][2]==X && Matriz[2][2]==X) ||
            (Matriz[0][0]==X && Matriz[1][1]==X && Matriz[2][2]==X) ||
            (Matriz[0][2]==X && Matriz[1][1]==X && Matriz[2][0]==X))
         {
             printf ("\n\n\n\n\a\t\tJogador 2, VOCÊ VENCEU!!!\n");
             break;
         }

         if (jogadas==9) {         // Condição para que a partida termine empatada
             printf ("PARTIDA EMPATADA");
             break;
         }
     }
     return (0);

}

@arfneto jogo da velha

  • Curtir 1
Postado

Muito melhor assim :) Mas não respondeu ao que eu perguntei: que d1@b0 é jogo? Não vejo a declaração...

 

O programa não está ok. Mas não muito bom de ler, rodar ou jogar. Do ponto de vista da interface, é muito chato digitar linha e coluna se só tem 9 casinhas na tela. Podia por exemplo mostrar apenas algo como

| X | O | X |
| 4 | 5 | 6 |
| 7 | O | 9 |

E o cara digita o número da célula que quer. Linha e Coluna é exagero.

 

O programa está difícil de ler com aquela matriz de duas dimensões e aqueles IF gigantes. Se só são dois jogadores porque não usar uma matriz para cada um? Fica mais fácil de identificar vitoria e pode ficar mais fácil de ler o programa... E quando um ganha o outro perde afinal.

 

E pouco eficiente: só existem essas 8 combinações decisivas, as 3 linhas e as 3 colunas e as duas diagonais. Então pode usar constantes já na compilação e comparar com valores fixos.

  • Curtir 1
  • Obrigado 1
Postado
1 hora atrás, patricia weber disse:

é pra ser jogo da velha

 

Eu li o programa. Entendo o que é. Mas não é o clássico programa de estudante de estruturas de dados para o jogo da velha. Nesse caso é apenas a interface para controlar o jogo entre dois usuários. No mesmo micro, o que é esquisito. :) 

 

De todo modo considere o que eu sugeri. Só uns palpites.

  • Curtir 1
Postado

@patricia weber   para melhorar é preciso que primeiro funcione ,  uma função para mostrar o tabuleiro  ajudaria ,  e seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
void mostra_o_tabuleiro( char Matriz[][3]){
    int y;
    system("cls");
    printf("  JOGO DA VELHA \n");
    for( y=0; y<3; y++ ){
        printf ("\t\t     %c | %c | %c\n",
        Matriz[y][0], Matriz[y][1], Matriz[y][2]);
        if( y < 3-1 )
            printf ("\t\t    ---+---+---  \n");
    }
}
int main (void) {
    char Matriz[3][3]={
        ' ',' ',' ',
        ' ',' ',' ',
        ' ',' ',' '};           // Declaração da matriz para o jogo
    int jogadas=0, j, y;
    while( jogadas <= 9 ){  // a letra  I  é problematica nas postagem , por isso o  Y
        mostra_o_tabuleiro(Matriz);
        printf ("\nINSIRA AS COORDENADAS, ");
        if( jogadas % 2 )
            printf ("JOGADOR 2\nLINHA: ");
        else
            printf ("JOGADOR 1\nLINHA: ");
        scanf ("%d",&y);
        y--;
        printf("COLUNA: ");
        scanf ("%d",&j);               // Parâmetros para entrada de dados da coluna
        j--;
        if( Matriz[y][j] == ' '){
            if( jogadas % 2 )//jogador 1
                Matriz[y][j] = 'X';
            else
                Matriz[y][j] = 'O';// jogador 2
            jogadas++;
        }
        if( Matriz[0][0]=='O' && Matriz[0][1]=='O' && Matriz[0][2]=='O' ||
            Matriz[1][0]=='O' && Matriz[1][1]=='O' && Matriz[1][2]=='O' ||
            Matriz[2][0]=='O' && Matriz[2][1]=='O' && Matriz[2][2]=='O' ||
            Matriz[0][0]=='O' && Matriz[1][0]=='O' && Matriz[2][0]=='O' ||
            Matriz[0][1]=='O' && Matriz[1][1]=='O' && Matriz[2][1]=='O' ||
            Matriz[0][2]=='O' && Matriz[1][2]=='O' && Matriz[2][2]=='O' ||
            Matriz[0][0]=='O' && Matriz[1][1]=='O' && Matriz[2][2]=='O' ||
            Matriz[0][2]=='O' && Matriz[1][1]=='O' && Matriz[2][0]=='O' ){
            mostra_o_tabuleiro(Matriz);
            printf("\n\a\t\tJogador 1, VOCÊ VENCEU!!!\n");
            break;
        }
        if( Matriz[0][0]=='X' && Matriz[0][1]=='X' && Matriz[0][2]=='X' ||
            Matriz[1][0]=='X' && Matriz[1][1]=='X' && Matriz[1][2]=='X' ||
            Matriz[2][0]=='X' && Matriz[2][1]=='X' && Matriz[2][2]=='X' ||
            Matriz[0][0]=='X' && Matriz[1][0]=='X' && Matriz[2][0]=='X' ||
            Matriz[0][1]=='X' && Matriz[1][1]=='X' && Matriz[2][1]=='X' ||
            Matriz[0][2]=='X' && Matriz[1][2]=='X' && Matriz[2][2]=='X' ||
            Matriz[0][0]=='X' && Matriz[1][1]=='X' && Matriz[2][2]=='X' ||
            Matriz[0][2]=='X' && Matriz[1][1]=='X' && Matriz[2][0]=='X' ){
            mostra_o_tabuleiro(Matriz);
            printf ("\n\n\n\n\a\t\tJogador 2, VOCÊ VENCEU!!!\n");
            break;
        }
        if( jogadas == 9 ){         // Condição para que a partida termine empatada
            printf ("PARTIDA EMPATADA");
            break;
        }
    }
    return 32768;
}

 

  • Curtir 1
  • Obrigado 2
Postado

Criar uma função para mostrar o tabuleiro como devair1010 fez é uma boa alternativa, dá até para aproveitar o loop e já verificar na própria função o vencedor,

 

Também dá para informar a linha e a coluna no mesmo scanf,

 

#include <stdio.h>

int imprime_matriz(char M[3][3], char j){
    int i, m=0;
    for(i=0;i<3;i++){
        printf("\t\t     %c | %c | %c\n",M[i][0],M[i][1],M[i][2]);
        if(M[i][0]==j && M[i][1]==j && M[i][2]==j) m = 1;
        if(M[0][i]==j && M[1][i]==j && M[2][i]==j) m = 1;
        
        if(i < 3-1) printf("\t\t    ---+---+---  \n");
    }
    if(M[0][0]==j && M[1][1]==j && M[2][2]==j) m = 1;
    if(M[0][2]==j && M[1][1]==j && M[2][0]==j) m = 1;

    return m;
}

int main(void) {
     char J = 'X', Matriz[3][3] = {
         ' ',' ',' ',' ',' ',' ',' ',' ',' '};
     int jogadas = 0, j, i;

     while(jogadas <= 9){
        printf("  JOGO DA VELHA \n");
        int m = imprime_matriz(Matriz, J);
         
        if(m){
            printf("O JOGADOR %d VENCEU!",((jogadas-1) % 2)+1);
            break;
        }
        printf("JOGADOR %d\n(LINHA,COLUNA): ",(jogadas % 2)+1);
        scanf("%d,%d",&i,&j);

        if(Matriz[i-1][j-1] == ' '){
            J = 'X';
            if(jogadas % 2) J = 'O';
            Matriz[i-1][j-1] = J;
            jogadas++;
         }
         if(jogadas==9){printf("PARTIDA EMPATADA");break;}
     }
     return 0;
 }

 

  • Obrigado 3

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!