Estou fazendo o cruso do C Progressivo, estou tentando por mim mesmo fazer o jogo da velha, porém estou com um erro para escrever a matriz na tela, ele da um erro no programa e fecha, achei um algoritmo na internet que faz o mesmo que o meu para escrever a matriz na tela, não muda nada, não sei porque o meu está dando erro e o dele consegui executar, segue meu código (está incompleto, estou tentando fazer ainda com alguns testes, não estranhem):
`#include <stdio.h>
int main()
{
char tabuleiro[3][3];
int linha, coluna, opcao = 0;
for (linha = 0 ; linha < 3 ; linha++)
{
for (coluna = 0 ; linha < 3 ; coluna++)
{
tabuleiro[linha][coluna] = ' ';
}
}
do
{
printf("+---+---+---+\n");
printf("| %c | %c | %c |\n",tabuleiro[0][0],tabuleiro[0][1],tabuleiro[0][2]);
printf("+---+---+---+\n");
printf("| %c | %c | %c |\n",tabuleiro[1][0],tabuleiro[1][1],tabuleiro[1][2]);
printf("+---+---+---+\n");
printf("| %c | %c | %c |\n",tabuleiro[2][0],tabuleiro[2][1],tabuleiro[2][2]);
printf("+---+---+---+\n");
printf("Escolha uma opcao: ");
scanf("%d",&opcao);
system("cls");
switch (opcao) {
case 1:
tabuleiro[0][0] = 9;
break;
case 2:
tabuleiro[0][1] = 9;
break;
case 3:
tabuleiro[0][2] = 9;
break;
case 4:
tabuleiro[1][0] = 9;
break;
case 5:
tabuleiro[1][1] = 9;
break;
case 6:
tabuleiro[1][2] = 9;
break;
case 7:
tabuleiro[2][0] = 9;
break;
case 8:
tabuleiro[2][1] = 9;
break;
case 9:
tabuleiro[2][2] = 9;
break;
default:
printf("Opcao invalida!\n");
}
}while(1);
}
`
E o que achei é esse:
`#include<stdio.h>
#include<conio.h>
int main(void)
{
char Matriz[3][3];
char O=‘O’, X=‘X’;
int l=0,j,i;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
Matriz[i][j]=' ';
while(l<=9)
{
printf(" JOGO DA VELHA \n");
for(i=0;i<3;i++)
{
printf("\t\t %c \xBA %c \xBA %c\n",Matriz[i][0],Matriz[i][1],Matriz[i][2]);
if(i<3-1)
{
printf("\t\t ÍÍÍ\xCEÍÍÍ\xCEÍÍÍ\n");
}
}
printf("\n\n\n\n\n\n\n\n\n\n\n\nINSIRA AS COORDENADAS, ");
if(l%2)printf("PLAYER 2\nLINHA: ");
else printf("PLAYER 1\nLINHA: ");
scanf("%d",&i);
printf("COLUNA: ");
scanf("%d",&j);
if(Matriz[i-1][j-1]==' ')
{
if(l%2)Matriz[i-1][j-1]=X;
else Matriz[i-1][j-1]=O;
l++;
}
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, VOCE VENCEU!!!");
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, VOCE VENCEU!!!");
break;
}
if(l==9)
{
printf("PARTIDA EMPATADA");
break;
}
}
getch();
return(0);
}
`
Reparem que que o inicio quando eu faço os “for” pra preencher a matriz com ’ ’ está igual o algoritmo que achei, não sei qual o problema.