Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jeannovaes

C - Alguém podia me dizer o que há de errado nesse código?

Recommended Posts


// Um exemplo de jogo-da-velha simples //

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

char matrix[3][3]; // a matriz do jogo //

char check (void);
void init_matrix(void);
void get_player_move(void);
void get_computer_move(void);
void disp_matrix(void);

void main (void)
{
char done;

printf("Este é o jogo-da-veha.\n");
printf("Você estará jogando contra o computador. \n");

done = ' ';
init_matrix();
do
{
	disp_matrix();
	get_palyer_move();
	done = check(); // verifica se há vencedor //
	if (done != ' ') break; // vencedor! //
	get_computer_move();
	done = check(); // verifica se há vencedor //
}
while (done == ' ');
if(done == 'X')
	printf("Você venceu!\n");
else
	printf("Eu ganhei!!!!\n");

disp_matrix(); // mostra as posições finais //

}

// inicializa a matriz //

void init_matrix(void)
{
int i, j;

for (i=0; i<3; i++);
for(j=0; j<3; j++);
}

// Obtém a sua jogada //

void get_player_move(void)
{
int x, y;

printf("Digite as coordenadas para o X: ");
scanf("%d%d", &x, y&);


x--; y--;

if (matrix[x][y] != ' ')
{
	printf("Posição invalida, tente novamente.\n");
	get_player_move();
}
else
	matrix[x][y] = 'X';
}

// Obtém uma jogada do computador. //

void get_computer_move(void)
{
int i, j;

for (i=0; i<3; i++);
{
for (j=0; i<3; j++);

if(matrix[i][j] == ' ') break;
if (matrix[i][j] == ' ') break;
}



if (i*j == 9)
{
	printf("Empatou\n");
	exit(0);

}
else
	matrix[i][j] = "O";
}

// mostra a matriz na tela. //

void disp_matrix(void)
{
int t;

for (t=0; t<3; t++){
	printf("%c | %c | %c", matrix[t][0], matrix[t][1], matrix[t][2]);

if(t != 2)
	printf("\n---|---|---\n");
}
printf("\n");
}

// verifica se há um vencedor //

char check(void)
{
int i;

for (i=0; i<3; i++) // verifica as linhas //
	if (matrix[i][0] == matrix [i][1] && matrix[i][0] == matrix[i][2])
		return matrix[i][0];

for (i=0; i<3; i++)
	if(matrix[0][i] == matrix[1][i] && matrix[0][i] == matrix[2][i])
		return matrix[0][i];

// testa as diagonais //

if (matrix[0][0] == matrix[1][1] && matrix[1][1] == matrix[2][2])
	return matrix[0][0];

if (matrix[0][2] == matrix[1][1] && matrix[1][1] == matrix[2][0])
	return matrix[0][2];

return ' ';

}

 

 

Aparece uma mensagem de erro assim:

 

 

Multiple markers at this line

- expected expression before

')' token

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passando o olho pelo código, sugiro que trabalhe nos seguintes aspectos:

 

Apesar de não ser ilegal, a declaração de main retornando void não é portável. Sugiro que use int main(void), ou int main(int argc, char *argv[]), ou equivalentes.

 

A função init_matrix não inicializa nada, apesar do que o nome sugere.

 

A função get_player_move não garante que o valor de x é um deslocamento válido a partir do endereço matrix, e nem que y é um deslocamento válido a partir do endereço matrix[x].

 

A função get_computer_move tenta armazenar um endereço (o endereço do byte contendo 'O' do objeto criado pelo string literal "O") em matrix[j], cujo tipo é char.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.