1
I’m playing an old game and I need to compare the positions if they’re equal to check the winner, but it’s not working.
Here is the code:
#include <stdio.h>
#include <string.h>
void exibir();
int checaLocal(char matriz[3][3], int linha, int coluna);
void checarGanhador(char matriz[3][3], char caractere);
int main() {
int i, j;
char matriz[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
printf("Programa Jogo da Velha.\n\n");
exibir(matriz);
int vez = 0;
for(i=0; i<3; i++) {
for(j=0; j<3; j++) {
printf("Entre Linha: ");
scanf("%d", &i);
printf("Entre Coluna: ");
scanf("%d", &j);
vez++;
if(matriz[i][j] != ' ' || validaLocal(matriz[3][3], i, j)) {
printf("Posicao Invalido ou Ocupada\n");
continue;
}
if(vez % 2 == 0) {
matriz[i][j] = 'X';
} else {
matriz[i][j] = 'O';
}
exibir(matriz);
}
}
exibir(matriz);
return 0;
}
void exibir(char matriz[3][3]) {
//EXIBE JOGO DA VELHA FORMATADO
printf("\n");
printf("%c | %c | %c \n", matriz[0][0], matriz[0][1], matriz[0][2]);
printf("---|---|---\n");
printf("%c | %c | %c \n", matriz[1][0],matriz[1][1], matriz[1][2]);
printf("---|---|---\n ");
printf("%c | %c | %c \n", matriz[2][0], matriz[2][1], matriz[2][2]);
printf("\n\n");
}
int validaLocal(char matriz[3][3], int linha, int coluna) {
//Checa se o local a ser inserido e valido
if(linha < 0 || linha > 2 || coluna < 0 || coluna > 2) {
return 1; //Erro
}
else {
return 0; //tudo ok
}
}
I tried to compare like this in a function
void verificaGanhador(matriz[3][3], char o) {
if(matriz[0][0] && matriz[0][1] && matriz[0][2] == o)
to compare the first line, but return an error.
I don’t understand the
void verificaGanhador
. If your function isvoid
, she will not return anything? How will you notify whether you are a winner or not? You should not return aboolean
?– Ricardo Pontual
Yes it is the doubt, should return a value.
– pedro