Исправление функции Tic Tac Toe-Draw - PullRequest
0 голосов
/ 03 октября 2019

Я делаю многопользовательскую игру в крестики-нолики с полуграфическим интерфейсом. Я сделал код, и большая часть его работает. Единственная часть, которая не работает, - это функция рисования.

Я понимаю, что я использую 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 хода.

При этом неправильном условии программа работает в определенной степени и может найти победителей, но никогда не объявляет ничью, даже если это происходит.

Спасибо за помощь !!

1 Ответ

0 голосов
/ 11 октября 2019

Я исправил ошибки, скоро уточню. Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...