Я делаю многопользовательскую игру в крестики-нолики с полуграфическим интерфейсом. Я сделал код, и большая часть его работает. Единственная часть, которая не работает, - это функция рисования.
Я понимаю, что я использую TurboC ++, который является сильно устаревшим компилятором,но индийская система образования следует только TurboC ++, поэтому я должен сделать в ней свой проект (недавно в учебный план был добавлен Python вместо C ++, но я оказался в последней группе учеников, которые не будут обучаться Python)
Проблема в последней части функции result (). Я не смог найти, что с ним не так. Я не использовал graphics.h, потому что его нет в моей программе.
одна функция результата:
struct mat //To store the positions and what is present in the 9 boxes
{
int x,y;char ch;
};
struct xo //To keep track of the match
{
int actp,actx,acty;
mat pos[3][3];
char flag;
void setup() //To create the boxes/bars
{
actp=1,actx=1,acty=1;
flag=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
pos[i][j].ch=0;
}
}
void result() //To find the result
{
char flage;
for(int i=0;i<3;i++) //Column win
{
if(pos[i][0].ch==pos[i][1].ch&&pos[i][1].ch==pos[i][2].ch)
flage=pos[i][0].ch;
}
for(i=0;i<3;i++) //Row win
{
if(pos[0][i].ch==pos[1][i].ch&&pos[1][i].ch==pos[2][i].ch)
flage=pos[0][i].ch;
}
if(pos[0][0].ch==pos[1][1].ch&&pos[1][1].ch==pos[2][2].ch) //Diagonal win
flage=pos[0][0].ch;
if(pos[0][2].ch==pos[1][1].ch&&pos[1][1].ch==pos[2][0].ch) //Other diagonal win
flage=pos[0][2].ch;
if(flage=='X')flag='1';
else if(flage=='O')flag='2';
else flag='0';
int chk=1;
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{if(pos[i][j].ch=='0'){chk=0;gotoxy(3,15);cout<<chk;} }//Added cout statement for debugging
}
if(flag=='0'&&chk==0)flag='D';//I understand that the condition is supposed to be chk==1,but it works only if I have this condition
}
}a;
Вот весь код, при необходимости: https://drive.google.com/open?id=19WMexp3Hw_p9hO3qiYm0HRj-GGAJeaTr
Снимок экрана: https://i.stack.imgur.com/wGh7a.jpg
Если я использую правильное условие, программа сообщает, что совпадение составляется сразу после 1 хода.
При этом неправильном условии программа работает в определенной степени и может найти победителей, но никогда не объявляет ничью, даже если это происходит.
Спасибо за помощь !!