Boa tarde rapaziada.
Estou com um jogo de damas em C rodando, só que quando a peça muda de casa, independente do jogador, ela fica com um simbolo "?".
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct{
char jog1[20], jog2[20], ganhador[20];
int cont1, cont2, pont_max;
}dama;
FILE *historico;
void jogador1(char matriz[8][8],char jogador, int oposto)
{
system("color 79");
int i,j,l,c,li,co,opcao=0;
do
{
system("cls");
if(jogador==1)
printf("\n\n---------------- A VEZ E A DO JOGADOR PECA @ ----------\n\n\n\n");
if(jogador==2)
printf("\n\n---------------- A VEZ E A DO JOGADOR PECA # ------------\n\n\n\n");
printf("\t \t\t 0 1 2 3 4 5 6 7 \n");
for(i=0;i<8;i++)
{
printf("\n\t\t\t%d ",i);
for(j=0;j<8;j++)
printf("%c ",matriz[j]);
}
printf("\n\n\t*************** CORDENADA DA PECA **********************");
printf("\n\tLINHA: ");
scanf("%d",&l);
printf("\n\tCOLUNA: ");
scanf("%d",&c);
printf("\n\n\t****COORDENADA DA POSICAO QUE A PECA VAI OCULPAR****");
printf("\n\tLINHA: ");
scanf("%d",&li);
printf("\n\tCOLUNA: ");
scanf("%d",&co);
if((li+co)%2==0)
{
if((jogador==1&&l<li)||(jogador==2&&l>li))
{
printf("linha\n");
if(c-1==co||c+1==co)
{
if(co==c-1)
{
matriz[li][co] = jogador;
matriz[l][c] = 0;
opcao++;
}
if(co==c+1)
{
matriz[li][co] = jogador;
matriz[l][c] = 0;
opcao++;
}
}
if(matriz[l+1][c+1]==oposto)
{
if(c+2==co)
{
matriz[li][co] = jogador;
matriz[l][c] = 0;
opcao++;
matriz[l+1][c+1]=0;
}
}
if(matriz[l+1][c-1]==oposto)
{
if(c-2==co)
{
matriz[li][co] = jogador;
matriz[l][c] = 0;
matriz[l+1][c-1]=0;
opcao++;
}
}
if(matriz[l-1][c+1]==oposto)
{
if(c+2==co)
{
matriz[li][co] = jogador;
matriz[l][c] = 0;
opcao++;
matriz[l-1][c+1]=0;
}
}
if(matriz[l-1][c-1]==oposto)
{
if(c-2==co)
{
matriz[li][co] = jogador;
matriz[l][c] = 0;
matriz[l-1][c-1]=0;
opcao++;
}
}
}
else printf("\n\n\t\t__________MOVIMENTO INVALIDO!!_________\n\t\t_________TENTE NOVAMENTE________\n");
}
system("pause");
}while(opcao!=1);
}
void ganhador(char matriz[8][8])
{
int i,j;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if(matriz[j]==2)
dama.cont1++;
if(matriz[j]==1)
dama.cont2++;
}
if(dama.cont1>dama.cont2)
{
printf("\n\tVENCEDOR........-> %s TOTAL DE PECAS: %d\n\n",dama.jog1,dama.cont1);
strcpy(dama.ganhador, dama.jog1);
dama.pont_max=dama.cont1;
}
else
{
if(dama.cont1<dama.cont2)
{
printf("\n\tVENCEDOR........-> %s TOTAL DE PECAS: %d\n\n",dama.jog2,dama.cont2);
strcpy(dama.ganhador, dama.jog2);
dama.pont_max=dama.cont2;
}
else{
printf("\n\tEmpate!\n\t%s: %d\n\t%s: %d\n\n\n",dama.jog1,dama.cont1,dama.jog2,dama.cont2);
strcpy(dama.ganhador,"jogo empatado");
dama.pont_max=dama.cont2;
}
}
}
void registro(void){
fwrite(&dama, sizeof(dama), 1, historico);
}
void escreve(void){
rewind(historico);
while(fread(&dama, sizeof(dama), 1, historico)==1)//LER A INFORMACAO ATE A ULTIMA.
printf("\nJogador peca preta: %s\nJogador peca branca: %s\nVencedor: %s Total de pecas: %d\n\n",dama.jog1, dama.jog2, dama.ganhador, dama.pont_max);
}
int main(int argc, char *argv[])
{
char opcao2;
char matriz[8][8];
int i,j, jogador=2,oposto=1,opcao=0;
dama.cont1=dama.cont2=0;
historico=fopen("Historico_dama.bin", "ab+");
matriz[0][0]= '@'; matriz[0][1]= 178; matriz[0][2]= '@'; matriz[0][3] = 178; matriz[0][4] = '@'; matriz[0][5]= 178; matriz[0][6]= '@'; matriz[0][7]= 178;
matriz[1][0]= 178; matriz[1][1]= '@'; matriz[1][2]= 178; matriz[1][3] = '@'; matriz[1][4] = 178;matriz[1][5]= '@'; matriz[1][6]= 178; matriz[1][7]= '@';
matriz[2][0]= '@'; matriz[2][1]= 178; matriz[2][2]= '@'; matriz[2][3] = 178; matriz[2][4] = '@'; matriz[2][5]= 178; matriz[2][6]= '@'; matriz[2][7]= 178;
matriz[3][0]= (178); matriz[3][1] = 0; matriz[3][2]= 178; matriz[3][3] = 0; matriz[3][4] = 178;matriz[3][5]= 0; matriz[3][6]= 178; matriz[3][7]= 0;
matriz[4][0]=0; matriz[4][1]= 178; matriz[4][2]= 0; matriz[4][3] = 178; matriz[4][4] = 0; matriz[4][5]= 178; matriz[4][6]= 0; matriz[4][7]= 178;
matriz[5][0]= 178; matriz[5][1]= '#'; matriz[5][2]= 178; matriz[5][3] = '#'; matriz[5][4] = 178;matriz[5][5]= '#'; matriz[5][6]= 178; matriz[5][7]= '#';
matriz[6][0]= '#'; matriz[6][1]= 178; matriz[6][2]= '#'; matriz[6][3] = 178; matriz[6][4] = '#'; matriz[6][5]= 178; matriz[6][6]= '#'; matriz[6][7]= 178;
matriz[7][0]= 178; matriz[7][1]= '#'; matriz[7][2]= 178; matriz[7][3] = '#'; matriz[7][4] = 178;matriz[7][5]= '#'; matriz[7][6]= 178; matriz[7][7]= '#';
do{
system("color 79");
printf("\tEscolha uma das op%c%ces abaixo:\n\n",135,228);
printf("\t%c A Jogar.\n\t%c B Sair.\n\n");
printf("\tOp%c%co: ",135,198);
scanf("%s",&opcao2);
system("cls");
switch(opcao2){
case 'A' :
case 'a':
system("color 79");
printf("\n\n\t\t\tPersistindo o empate o jogo pode terminar por tempo.....");
printf("\n\n\n");
printf("\n\n\n\t\t Bom Jogo");
printf("\n\n\n");
system("pause");
system("cls");
system("color 79");
printf("\n\n\t\tINFORME O NOME DO JOGADOR PECA #:\n\n\t\t\t\t");//NOME DOS JOGADORES..
scanf("%s",dama.jog1);
printf("\n\n\t\tINFORME O NOME DO JOGADOR PECA @:\n\n\t\t\t\t ");//NOME DOS JOGADORES..
scanf("%s",dama.jog2);
int tempo = clock();
while(clock()-tempo<500000000)
{
jogador=1;oposto=2;
jogador1(matriz,jogador,oposto);
jogador=2;oposto=1;
jogador1(matriz,jogador,oposto);
}
system("cls");
system("color 79");
printf("\n\t\t..........O Tempo Acabou...........\n\n\n");
ganhador(matriz);
registro();
system("pause");
system("cls");
break;
case 'B':
case'b':
system("color 79");
printf("\n\n\n\n\t\t\t FIM DO JOGO\n\n\n\n\n");exit(0);
break;
default:
system("cls");
printf("Digite A para jogar ou B para sair\n\n\n\n\n");
}
}while (opcao2= 'A');
system("PAUSE");
return 0;
}
Já tentei de tudo e não achei a solução. Agradeço a quem possa ajudar.