Ir ao conteúdo

Posts recomendados

Postado

 

Estou criando um jogo da velha em C para me aprofundar mais em programação, comecei com um simples algoritmo de criação do tabuleiro e preenchimento do mesmo, porém quero que quando seja todo preenchido ele verifique e encerre o programa, agradeço desde já!

#include <stdio.h>
#include <stdlib.h>


int main(void) { 

 char vazio[3][3];
 int i, j, x, y;

 for (i=0; i<=2; i++){
   for (j=0; j<=2; j++){
     vazio[i][j] = ' ';
   }
 }

 printf("%c | %c | %c\n", vazio[0][0], vazio[0][1], vazio[0][2]);
 printf("%c | %c | %c\n", vazio[1][0], vazio[1][1], vazio[1][2]);
 printf("%c | %c | %c\n", vazio[2][0], vazio[2][1], vazio[2][2]);

 

 
 while (vazio[x][y]=' ')
 {

  printf("Informe uma coordenada para preenchimento: \n");
  scanf("%d %d", &x, &y);

  if (vazio[x][y] != ' ') {
   printf("Já esta preenchido tente novamente!!\n");
  } 
  else {
   vazio[x][y] = 'x';
  }

  printf("Aqui está o preenchimento : \n");

  printf("%c | %c | %c\n", vazio[0][0], vazio[0][1], vazio[0][2]);
  printf("%c | %c | %c\n", vazio[1][0], vazio[1][1], vazio[1][2]);
  printf("%c | %c | %c\n", vazio[2][0], vazio[2][1], vazio[2][2]);
   
 } 
 
 
 printf("Você preencheu tudo!!\n");
 

 return 0;
}

 

  • Curtir 1
Postado

@Jorge Henrique Frasson Bacana, seu problema é que você está tentando acessar a posição [3][3] da matriz:

while (vazio[x][y]=' ')

 

isso acontece porque você não resetou as variáveis 'i' e 'j' que foram utilizadas dentro do 'FOR', nisso elas á vem com valor. Dei uma adiantada no seu código, continue, você está indo bem.

Não se esqueça de voltar aqui e postar o código completo.

 

#include <stdio.h>
#include <stdlib.h>

int preencheu(char tabuleiro[][3]);

int main(void)
{

    char vazio[3][3];
    int i, j,x , y ;

    for (i=0; i < 3; i++)
    {
        for (j=0; j < 3; j++)
        {
            vazio[i][j] = ' ';
        }
    }

    printf("%c | %c | %c\n", vazio[0][0], vazio[0][1], vazio[0][2]);
    printf("%c | %c | %c\n", vazio[1][0], vazio[1][1], vazio[1][2]);
    printf("%c | %c | %c\n", vazio[2][0], vazio[2][1], vazio[2][2]);

    //x = 0;
    //y = 0;

    while (preencheu(vazio) == 0)
    {

        printf("Informe uma coordenada para preenchimento: \n");
        scanf("%d %d", &x, &y);

        if (vazio[x][y] != ' ')
        {
            printf("Já esta preenchido tente novamente!!\n");
        }
        else
        {
            vazio[x][y] = 'x';
        }

        printf("Aqui está o preenchimento : \n");

        printf("%c | %c | %c\n", vazio[0][0], vazio[0][1], vazio[0][2]);
        printf("%c | %c | %c\n", vazio[1][0], vazio[1][1], vazio[1][2]);
        printf("%c | %c | %c\n", vazio[2][0], vazio[2][1], vazio[2][2]);

    }


    printf("Você preencheu tudo!!\n");


    return 0;
}


//Função verifica todo o tabuleiro e:
//-Retorna 1 caso o tabuleiro esteja todo preenchido
//-Retorna 2 caso o tabuleiro não esteja totalmente preenchido
int preencheu(char tabuleiro[][3]) {
  int i, j;

  for(i = 0; i < 9; i++)  //percorre a matriz
      if(tabuleiro[0][i] == ' ') //caso encontre alguma posição não preenchida
        return 0; //retorna 0 e termina a a execução da função

  return 1; //caso não encontre posições sem preenchimento retorna 1
}

 

Visitante
Este tópico está impedido de receber novas respostas.

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