Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
1

Игра "Крестики нолики", почему не работает проверка окончания?

27.07.2014, 19:02. Просмотров 1625. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
using namespace std;
int main ()
{
    int a,k=0;
    char mas[7][7];
    while(k<10)
    {
 
    for(int i=0;i<7;i++)
    {
        for(int j=0;j<7;j++)
        {
            if(j==0||j==2||j==4||j==6)
                mas[i][j]='=';
            if(i==0||i==2||i==4||i==6)
                mas[i][j]='=';
                if(mas[i][j]!='='&&mas[i][j]!='x'&&mas[i][j]!='o')
                mas[i][j]=' ';
            cout<<mas[i][j];
        }
        cout<<endl;
    }
    
    if(mas[1][1]==mas[1][3]==mas[1][5])
    {
        cout<<"Victory"<<endl;
            break;
    }
    else if(mas[3][1]==mas[3][3]==mas[3][5])
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[5][1]==mas[5][3]==mas[5][5])
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][1]==mas[3][3]==mas[5][5])
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[5][1]==mas[3][3]==mas[1][5])
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][1]==mas[3][1]==mas[5][1])
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][3]==mas[3][3]==mas[5][3])
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][5]==mas[3][5]==mas[5][5])
       {
        cout<<"Victory"<<endl;
            break;
       }
    cin>>a; 
    switch(a)
    {
        case 1:
            cin>>mas[1][1];
            break;
        case 2:
            cin>>mas[1][3];
            break;
        case 3:
            cin>>mas[1][5];
            break;
        case 4:
            cin>>mas[3][1];
            break;
        case 5:
            cin>>mas[3][3];
            break;
        case 6:
            cin>>mas[3][5];
            break;
        case 7:
            cin>>mas[5][1];
            break;
        case 8:
            cin>>mas[5][3];
            break;
        case 9:
            cin>>mas[5][5];
            break;
        default :
                cout<<"za polem!!!!";
    }
    system("cls");
    k++;
    
    }
    
    system("pause");
}
почему не работает условие победы(если 3 одинаковых элемента массива)????

Добавлено через 18 минут
все уже нашел ошибку)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2014, 19:02
Ответы с готовыми решениями:

"Крестики-нолики": проверить, закончена ли игра выигрышем "крестиков"
Клеточное поле размером 5х5 является результатом игры в крестики-нолики. проверить, закончена игра...

Игра "Крестики-нолики": правильно выстроить поле
Я очень сильно начинающий программист. Поэтому попрошу сразу не кидатся что я делаю не так и как...

Игра "Крестики-нолики" формат 5х5
Есть данный код игры (позаимствован у юзера Fixer 84), но с массивом 3х3. Нужно сделать 5х5, суть я...

Cетевая игра "крестики-нолики"
Помогите, на курсовой задали, сделать сетевую игру крестики-нолики в консоли, нужно сделать сервер...

12
30 / 30 / 12
Регистрация: 21.05.2012
Сообщений: 448
27.07.2014, 19:56 2
shukaka, строку 25 поменяй на
C++
1
        if (((mas[1][1] == mas[1][3]) && (mas[1][1] == mas[1][5])) && mas[1][1] != ' ')
Добавлено через 9 минут
shukaka,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
using namespace std;
int main()
{
    int a, k = 0;
    char mas[7][7];
    while (k < 10)
    {
        //рисуем поле
        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 7; j++)
            {
                if (j == 0 || j == 2 || j == 4 || j == 6)
                    mas[i][j] = '=';
                if (i == 0 || i == 2 || i == 4 || i == 6)
                    mas[i][j] = '=';
                if (mas[i][j] != '='&&mas[i][j] != 'x'&&mas[i][j] != 'o')
                    mas[i][j] = ' ';
                cout << mas[i][j];
            }
            cout << endl;
        }
        //////////
 
        if ((mas[1][1] == mas[1][3]) && (mas[1][1] == mas[1][5]) && (mas[1][1] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[3][1] == mas[3][3]) && (mas[3][1] == mas[3][5]) && (mas[3][1] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[5][1] == mas[5][3]) && (mas[5][1] == mas[5][5]) && (mas[5][1] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[1][1] == mas[3][3]) && (mas[1][1] == mas[5][5]) && (mas[1][1] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[5][1] == mas[3][3]) && (mas[5][1] == mas[1][5]) && (mas[5][1] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[1][1] == mas[3][1]) && (mas[1][1] == mas[5][1]) && (mas[1][1] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[1][3] == mas[3][3]) && (mas[1][3] == mas[5][3]) && (mas[1][3] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        else if ((mas[1][5] == mas[3][5]) && (mas[1][5] == mas[5][5]) && (mas[1][5] != ' '))
        {
            cout << "Victory" << endl;
            break;
        }
        cin >> a;
        switch (a)
        {
        case 1:
            cin >> mas[1][1];
            break;
        case 2:
            cin >> mas[1][3];
            break;
        case 3:
            cin >> mas[1][5];
            break;
        case 4:
            cin >> mas[3][1];
            break;
        case 5:
            cin >> mas[3][3];
            break;
        case 6:
            cin >> mas[3][5];
            break;
        case 7:
            cin >> mas[5][1];
            break;
        case 8:
            cin >> mas[5][3];
            break;
        case 9:
            cin >> mas[5][5];
            break;
        default:
            cout << "za polem!!!!";
        }
        system("cls");
        k++;
 
    }
 
    system("pause");
}
1
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
27.07.2014, 20:11  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
using namespace std;
int main ()
{
    int a,k=0;
    char mas[7][7];
    while(k<10)
    {
 
    for(int i=0;i<7;i++)
    {
        for(int j=0;j<7;j++)
        {
            if(j==0||j==2||j==4||j==6)
                mas[i][j]='=';
            if(i==0||i==2||i==4||i==6)
                mas[i][j]='=';
                if(mas[i][j]!='='&&mas[i][j]!='x'&&mas[i][j]!='o')
                mas[i][j]=' ';
            cout<<mas[i][j];
        }
        cout<<endl;
    }
    
    if(mas[1][1]!=' '&&mas[1][3]!=' '&&mas[1][5]!=' ')
    {
        cout<<"Victory"<<endl;
            break;
    }
    else if(mas[3][1]!=' '&&mas[3][3]!=' '&&mas[3][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[5][1]!=' '&&mas[5][3]!=' '&&mas[5][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][1]!=' '&&mas[3][3]!=' '&&mas[5][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[5][1]!=' '&&mas[3][3]!=' '&&mas[1][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][1]!=' '&&mas[3][1]!=' '&&mas[5][1]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][3]!=' '&&mas[3][3]!=' '&&mas[5][3]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][5]!=' '&&mas[3][5]!=' '&&mas[5][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    cin>>a; 
    switch(a)
    {
        case 1:
            cin>>mas[1][1];
            break;
        case 2:
            cin>>mas[1][3];
            break;
        case 3:
            cin>>mas[1][5];
            break;
        case 4:
            cin>>mas[3][1];
            break;
        case 5:
            cin>>mas[3][3];
            break;
        case 6:
            cin>>mas[3][5];
            break;
        case 7:
            cin>>mas[5][1];
            break;
        case 8:
            cin>>mas[5][3];
            break;
        case 9:
            cin>>mas[5][5];
            break;
        default :
                cout<<"za polem!!!!";
    }
    
    
    if(mas[1][1]=='x')
    {
        mas[1][1]!='o';
    }
    system("cls");
    k++;
    
    }
    
    system("pause");
}
почему программа игнорит это условие???
C++
1
2
3
4
if(mas[1][1]='x')
    {
        mas[1][1]!='o';
    }
0
What a waste!
1576 / 1277 / 171
Регистрация: 21.04.2012
Сообщений: 2,677
27.07.2014, 20:13 4
Цитата Сообщение от shukaka Посмотреть сообщение
C++
1
mas[1][1]='x'
Тут присваивание, а не сравнение, если что.
0
30 / 30 / 12
Регистрация: 21.05.2012
Сообщений: 448
27.07.2014, 20:15 5
shukaka, а так ?
C++
1
2
3
4
if(mas[1][1]=='x')
    {
        mas[1][1]='o';
    }
0
0 / 0 / 5
Регистрация: 13.04.2014
Сообщений: 70
28.07.2014, 09:28 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <iostream>
#include <conio.h>
#include <random>
#include <time.h>
 
using namespace std;
 
char name1[30];
char name2[30];
char table[3][3];
 
bool step;
 
void instruction()
{
    int l = 0;
 
    for(int i(0); i < 3; i++)
    {
        for(int j(0); j < 3; j++)
        {
            cout << "| " << l+1 << ' ';
            table[i][j] = char(49+l);
            l++;
        }
        cout << '|';
        cout << endl;
    }
 
    cout << "\nДля хода нажмите цифру ячейки поля\n";
    cout << "Для начала игры нажмите клавишу:";
    _getch();
}
bool input()
{
    for(int i(0); i < 3; i++)
    {
        for(int j(0); j < 3; j++)
        {
            cout << "| " << table[i][j] << ' ';
        }
        cout << '|';
        cout << endl;
    }
 
    cout << endl;
    if(step)
        cout << "Ходит " << name1  << " : ";
    else cout << "Ходит " << name2 << " : ";
 
    int n;
    cin >> n;
    if(n < 1 || n > 9)
        return false;
    int i,j;
 
    if(n%3 == 0)
    {
        i = n/3-1;
        j = 2;
    }
    else
    {
        j = n%3-1;
        i = n/3;
    }
    
    if(table[i][j] == 'O' || table[i][j] == 'X')
        return false;
        
    if(step)
    {
        table[i][j] = 'X';
        step = false;
    }
    else {table[i][j] = 'O'; step =true;}
    return true;
}
bool win()
{
    for(int i(0); i < 3; i++)
        if((table[i][0] == table[i][1]) && (table[i][0] == table[i][2]))
            return true;
    
        else    
            if((table[0][i] == table[1][i]) && (table[0][i] == table[2][i]))
                return true;
        
            else if((table[0][0] == table[1][1] && table[0][0] == table[2][2]) || (table[0][2] == table[1][1] && table[0][2] == table[2][0]))
                return true;
    
        
    return false;
}
 
int main()
{
    setlocale(LC_ALL , "Russian");
 
 
    instruction();
    system("cls");
    int i = 0;
 
    cout << "Введите имя 1 игрока: ";
    cin.getline(name1,30);
    cout << "Введите имя 2 игрока: ";
    cin.getline(name2,30);
    
    srand(time(NULL));
    if(rand() & 1)//
        step = true;
    else step = false;
 
    while(!win())
    {
        if(i == 9)
        {
            cout << "Ничья!!";
            _getch();
            return -1;
        }
        system("cls");
        if( !input() )
        {
            cout << "Вы ввели неверные данные повторите!";
            _getch();
        }
        i++;
    }
 
    system("cls");
    if(step)
        cout << "Победил " << name2 << endl;
    else cout << "Победил " << name1 << endl;
 
 
    _getch();
    return 0;
}
0
3284 / 2668 / 721
Регистрация: 25.03.2012
Сообщений: 9,624
Записей в блоге: 1
28.07.2014, 17:44 7
Ярослав Никитин, это вообще какой-то левый код! У автора этого нет!
shukaka, mas[1][1]==mas[1][3]==mas[1][5] так сравнивать нельзя! Я поражаюсь! Я бы даже, если бы нетвёрдо знал операторы в С++, не додумался бы так написать. В своё время возможность писать a=b=c меня шокировала!
А тут, мало того, что тройное использзование оператора, так ещё и совершенно неуместное! Операторы в яззыке Си выполняются последовательно, в порядке приоритета, а не как в математике!
0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
28.07.2014, 18:37  [ТС] 8
так я как бы исправил эту глупость

Добавлено через 1 минуту
написано ведь нашел ошибку)

Добавлено через 59 секунд
так побывал тоже....игнорит просто условие
0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
28.07.2014, 21:17  [ТС] 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
using namespace std;
int main ()
{
    int a,k=0,c;
    char mas[7][7];
    while(k<10)
    {
        
 
    for(int i=0;i<7;i++)
    {
        for(int j=0;j<7;j++)
        {
            if(j==0||j==2||j==4||j==6)
                mas[i][j]='=';
            if(i==0||i==2||i==4||i==6)
                mas[i][j]='=';
                if(mas[i][j]!='='&&mas[i][j]!='x'&&mas[i][j]!='o')
                mas[i][j]=' ';
            cout<<mas[i][j];
        }
        cout<<endl;
    }
    
    if(mas[1][1]!=' '&&mas[1][3]!=' '&&mas[1][5]!=' ')
    {
        cout<<"Victory"<<endl;
            break;
    }
    else if(mas[3][1]!=' '&&mas[3][3]!=' '&&mas[3][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[5][1]!=' '&&mas[5][3]!=' '&&mas[5][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][1]!=' '&&mas[3][3]!=' '&&mas[5][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[5][1]!=' '&&mas[3][3]!=' '&&mas[1][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][1]!=' '&&mas[3][1]!=' '&&mas[5][1]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][3]!=' '&&mas[3][3]!=' '&&mas[5][3]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    else if(mas[1][5]!=' '&&mas[3][5]!=' '&&mas[5][5]!=' ')
       {
        cout<<"Victory"<<endl;
            break;
       }
    
    cin>>a; 
    switch(a)
    {
        case 1:
        
            cin>>mas[1][1];
            break;
        case 2:
            cin>>mas[1][3];
            break;
        case 3:
            cin>>mas[1][5];
            break;
        case 4:
            cin>>mas[3][1];
            break;
        case 5:
            cin>>mas[3][3];
            break;
        case 6:
            cin>>mas[3][5];
            break;
        case 7:
            cin>>mas[5][1];
            break;
        case 8:
            cin>>mas[5][3];
            break;
        case 9:
            cin>>mas[5][5];
            break;
        default :
                cout<<"za polem!!!!";
    }
    system("cls");
    k++;
    
    }
    
    system("pause");
}
как сделать так что если я ставлю крестик то на его место нолик уже нельзя поставить???
0
30 / 30 / 12
Регистрация: 21.05.2012
Сообщений: 448
28.07.2014, 21:45 10
shukaka, в switch добавь для каждой ячейки массива
C++
1
2
3
4
case 1:
            if (mas[1][1] != 'x' || mas[1][1] != '0')
            cin >> mas[1][1];
            break;
Добавлено через 7 минут
shukaka,

Не по теме:

ошибся

0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
28.07.2014, 21:46  [ТС] 11
неа не пашит(
0
30 / 30 / 12
Регистрация: 21.05.2012
Сообщений: 448
28.07.2014, 21:49 12
shukaka,
C++
1
2
3
4
5
6
case 1:
            if (mas[1][1]==' '){
 
                cin >> mas[1][1];
            }
            break;
1
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
28.07.2014, 21:53  [ТС] 13
все я смог решить эту проблему
)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2014, 21:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

"Крестики-Нолики": проверка на повтор знака
Помогите сделать проверку повтора знака #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;ctime&gt;...

Игра "Крестики-нолики"
Доброго времени суток. Нуждаюсь в помощи! Я написал код игры &quot;Крестики-нолики&quot; по книге и при...

Игра "Крестики-нолики"
Помогите дописать программу, чтобы выводило, кто победил и может исправить некоторые недочеты,...

Игра "Крестики - нолики"
Всем добрый вечер,вот пишу игру крестики нолики,и столкнулся с проблемой,можете подсказать ,вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.