Member 13613353 Ответов: 2

Ниже приведен код C++ консольных крестиков-ноликов, над которыми я работал. Но он не работает, Может ли кто-нибудь сказать, что с ним не так ?





#include<iostream>
#include <process.h>
#include<conio.h>
#include<stdlib.h>

using namespace std ;
int checker(char i , char ox[4][4] , int v){
    if ((ox[1][1] == i && ox[2][2] == i && ox[3][3] == i)||( ox [1][3] == i && ox [2][2] == i && ox[3][3] == i  ))
    {
        return v ;

    }
    int  j ;
    for (j = 1 ; j < 4  ; j ++)
    {
        if ((ox[j][1]  == i && ox[j][2] ==  i) && (ox[j][3] == i))
        {
            return v ;

        }
        else  if ((ox[1][j] == i && ox[1][j] == i) && ox[1][j] == i  )
        {
            return v ;
        }

        else
        {
            return 9 ;
        }
    }

}

int main()
{
    system("color 20") ;
    char ox[4][4] = {{' ',' ',' ', ' '} ,{' ',' ',' ',' '},{' ',' ',' ', ' '},{' ',' ',' ', ' '}}; int  plastat[2] ; int plbstat[2];

    int c = 1 , a , b ,x , y , whichplayer;

 while(c <= 10)
    {
        system("cls") ;
        cout << "console tic tac toe \n\t\t\t-creator Prasanth Chettri \n \n \n" << endl ;

        for (a = 1; a <= 3 ; a++)
        {
                cout << "\t\t\t\t\t\t" ;
            for(b = 1 ; b <= 3 ; b++)
            {
                cout  << "|" << ox[b][a] ;
            }
            cout   <<"|"<<endl<<"\t\t\t\t\t\t"<<"--------"<<endl ;
        }
        if (c%2 == 1)
        {

                whichplayer = 1 ;
        }
        else
        {
                whichplayer = 2 ;
        }

        cout << "for player" << whichplayer << " :\n" ;
        cout << "enter the row and column : " ;
        cin >>x>>y ;

        if (whichplayer == 1 && c != 10 && ox[x][y] == ' ')
        {
            ox[x][y] = 'o' ;
        }
        else if (whichplayer == 2 && c != 10 && ox[x][y] == ' ')
        {
            ox[x][y] = 'x' ;
        }
        else
        {
            cout << "invalid movement !" << endl ;
            c-- ;
            getch() ;
        }
        if (c == 10 )
        {
            cout << "nobody won ! It was a draw" << endl ;
        }
       if ( checker('x' , ox , 1) == 1  )
       {
           cout << "player 1 won " << endl ;
           c = 10;
       }
     if ( checker('o' , ox , 2) == 2  )
       {
           cout << "player 2 won " << endl ;
           c = 10;
       }






        c++ ;

    }
    getch() ;
    return 0 ;
}


Что я уже пробовал:

Я буду очень благодарен, если кто-нибудь ответит. Я перепробовал все, но ничего не работает Plsssss....... Мне нужна твоя помощь

Mohibur Rashid

Это не работает-это недостаточно хорошая информация.

Наряду с написанием кода Вы также должны быть в состоянии объяснить, где, по вашему мнению, он не работает

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Но он не работает, Может ли кто-нибудь сказать, что с ним не так ?

Вы даже не описываете, как все пошло не так.
Научитесь исследовать себя с помощью отладчика, это часть вашей работы.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

CPallini

- Это не работает. это не совсем информативно: вы должны предоставить нам более подробную информацию.

Я бы начал просто: сначала не выполняйте никакой проверки на win, просто убедитесь, что пользовательский ввод обрабатывается правильно и пользовательский интерфейс также обновляется правильно.
Более того я бы использовал более современный компилятор и постарался бы воспользоваться его преимуществами C++ особенности языка (и стандартной библиотеки).