Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
95 / 0 / 1
Регистрация: 12.07.2016
Сообщений: 73
1

Крестики-нолики

03.12.2016, 14:25. Просмотров 568. Ответов 5
Метки нет (Все метки)

Ребят!
Как сделать проверку на занятость квадратика?

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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#include <iostream>
 
using namespace std;
 
int BoardSquare(int array[][3])
{
    array[0][0] = 1;
    array[0][1] = 2;
    array[0][2] = 3;
    array[1][0] = 4;
    array[1][1] = 5;
    array[1][2] = 6;
    array[2][0] = 7;
    array[2][1] = 8;
    array[2][2] = 9;
 
 
    cout << "Here is board example\n";
    cout << "The numbers from 1-9 are valid numbers which you can choose to make a step\n\n";
    cout << "   -" << array[0][0] << "-|-" << array[0][1] << "-|-" << array[0][2] << '-' << endl;
    
    cout << "   -" << array[1][0] << "-|-" << array[1][1] << "-|-" << array[1][2] << '-' << endl;
 
    cout << "   -" << array[2][0] << "-|-" << array[2][1] << "-|-" << array[2][2] << '-' << endl;
 
    
    return array[3][3];
}
 
int Game()
{
    char array[3][3];
    
    array[0][0] = ' ';
    array[0][1] = ' ';
    array[0][2] = ' ';
    array[1][0] = ' ';
    array[1][1] = ' ';
    array[1][2] = ' ';
    array[2][0] = ' ';
    array[2][1] = ' ';
    array[2][2] = ' ';
 
    int count = 0;
 
    cout << endl;
    int choice;
    while (true)
    {
 
        cout << "Which position do you choose?\n\n";
        cin >> choice;
        if (choice == 1)
        {
            array[0][0] = 'X';
            array[0][1] = 'O';
        }
        if (choice == 2)
        {
            array[0][1] = 'X';
            array[0][2] = 'O';
        }
        if (choice == 3)
        {
            array[0][2] = 'X';
            array[1][0] = 'O';
        }
        if (choice == 4)
        {
            array[1][0] = 'X';
            array[1][1] = 'O';
        }
        if (choice == 5)
        {
            array[1][1] = 'X';
            array[1][2] = 'O';
        }
        if (choice == 6)
        {
            array[1][2] = 'X';
            array[2][0] = 'O';
        }
        if (choice == 7)
        {
            array[2][0] = 'X';
            array[2][1] = 'O';
        }
        if (choice == 8)
        {
            array[2][1] = 'X';
            array[2][2] = 'O';
        }
        if (choice == 9)
        {
            array[2][2] = 'X';
            array[0][0] = 'O';
        }
 
        if (choice < 1 || choice > 9)
        {
            cout << "Invalid move!\n";
            continue;
        }
        
 
        cout << "   -" << array[0][0] << "-|-" << array[0][1] << "-|-" << array[0][2] << '-' << endl;
 
        cout << "   -" << array[1][0] << "-|-" << array[1][1] << "-|-" << array[1][2] << '-' << endl;
 
        cout << "   -" << array[2][0] << "-|-" << array[2][1] << "-|-" << array[2][2] << '-' << endl;
        cout << endl;
        
        if ((array[0][0] == 'X') && (array[0][1] == 'X') && (array[0][2] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[1][0] == 'X') && (array[1][1] == 'X') && (array[1][2] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[2][0] == 'X') && (array[2][1] == 'X') && (array[2][2] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[0][0] == 'X') && (array[1][1] == 'X') && (array[2][2] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[2][0] == 'X') && (array[1][1] == 'X') && (array[0][2] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[0][0] == 'X') && (array[1][0] == 'X') && (array[2][0] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[0][1] == 'X') && (array[1][1] == 'X') && (array[2][1] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[0][2] == 'X') && (array[1][2] == 'X') && (array[2][2] == 'X'))
        {
            cout << "You win!\n";
            break;
        }
        if ((array[0][0] == 'O') && (array[0][1] == 'O') && (array[0][2] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[1][0] == 'O') && (array[1][1] == 'O') && (array[1][2] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[2][0] == 'O') && (array[2][1] == 'O') && (array[2][2] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[0][0] == 'O') && (array[1][1] == 'O') && (array[2][2] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[2][0] == 'O') && (array[1][1] == 'O') && (array[0][2] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[0][0] == 'O') && (array[1][0] == 'O') && (array[2][0] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[0][1] == 'O') && (array[1][1] == 'O') && (array[2][1] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
        if ((array[0][2] == 'O') && (array[1][2] == 'O') && (array[2][2] == 'O'))
        {
            cout << "You loose!\n";
            cout << "Computer wins\n";
            break;
        }
    }
    return choice;
}
 
int main()
{
    int array[3][3];
    BoardSquare(array);
 
    Game();
 
    cin.ignore();
    cin.get();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2016, 14:25
Ответы с готовыми решениями:

Крестики-нолики
Помогите пожалуйста создать игру крестики-нолики на 2 игроков, поле игры - массив 3х3. Нашла...

Крестики нолики
Здравствуйте. Я сделал программу позволяющую играть в крестики-нолики. Можете помочь найти...

Крестики нолики
Привет всем! Пишу крестики нолики в консоли и проблема вот в чем: нарисовал само поле, и нужно при...

Крестики-нолики
При запуске выдаёт ошибку error LNK2001: неразрешенный внешний символ &quot;&quot;char __cdecl check(void)&quot;...

5
71 / 68 / 67
Регистрация: 18.09.2015
Сообщений: 234
03.12.2016, 15:17 2
C++
1
2
3
4
5
6
7
8
9
10
    if (choice == 1)
        {
            if (array[0][0] == 'X' || array[0][0] == 'O')
                cout << "NoNo!"
            else
            {
                array[0][0] = 'X';
                array[0][1] = 'O';
            }
        }
1
0 / 0 / 0
Регистрация: 03.12.2016
Сообщений: 2
03.12.2016, 15:17 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
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
141
142
143
144
145
146
147
148
149
150
#include <iostream>
#include <time.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define error cout<<"ERROR\n"
#define cls system("cls")
#define pause system("pause")
 
using namespace std;
 
int nobody=0;
HWND console=GetForegroundWindow();
bool won;
int choose;
char mass[3][3]=
{'1','2','3',
'4','5','6',
'7','8','9'};
 
void newgame()
{
 mass[0][0]='1';
 mass[0][1]='2';
 mass[0][2]='3';
 mass[1][0]='4';
 mass[1][1]='5';
 mass[1][2]='6';
 mass[2][0]='7';
 mass[2][1]='8';
 mass[2][2]='9';
}
 
void showboard()
{
    {
cls;
int counter(0);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
    counter++;
    cout<<mass[i][j]<<"|";
    if(counter%3==0)
    {
        cout<<endl;
        cout<<"------\n";
    }
}
}
}
 
void playerturn(char player)
{
    switch(player)
    {
    case 'X':
        a:
        cout<<"Player X your time to choose ";
        cin>>choose;
        switch(choose)
        {
            case 1:if(mass[0][0]=='O'||mass[0][0]=='X'){error;goto a;}mass[0][0]='X';break;
            case 2:if(mass[0][1]=='O'||mass[0][1]=='X'){error;goto a;}mass[0][1]='X';break;
            case 3:if(mass[0][2]=='O'||mass[0][2]=='X'){error;goto a;}mass[0][2]='X';break;
            case 4:if(mass[1][0]=='O'||mass[1][0]=='X'){error;goto a;}mass[1][0]='X';break;
            case 5:if(mass[1][1]=='O'||mass[1][1]=='X'){error;goto a;}mass[1][1]='X';break;
            case 6:if(mass[1][2]=='O'||mass[1][2]=='X'){error;goto a;}mass[1][2]='X';break;
            case 7:if(mass[2][0]=='O'||mass[2][0]=='X'){error;goto a;}mass[2][0]='X';break;
            case 8:if(mass[2][1]=='O'||mass[2][1]=='X'){error;goto a;}mass[2][1]='X';break;
            case 9:if(mass[2][2]=='O'||mass[2][2]=='X'){error;goto a;}mass[2][2]='X';break;
            default:error;
            goto a;
        };
        break;
    case 'O':
        b:
        cout<<"Player O your time to choose ";
        cin>>choose;
        switch(choose)
        {
            case 1:if(mass[0][0]=='O'||mass[0][0]=='X'){error;goto b;}mass[0][0]='O';break;
            case 2:if(mass[0][1]=='O'||mass[0][1]=='X'){error;goto b;}mass[0][1]='O';break;
            case 3:if(mass[0][2]=='O'||mass[0][2]=='X'){error;goto b;}mass[0][2]='O';break;
            case 4:if(mass[1][0]=='O'||mass[1][0]=='X'){error;goto b;}mass[1][0]='O';break;
            case 5:if(mass[1][1]=='O'||mass[1][1]=='X'){error;goto b;}mass[1][1]='O';break;
            case 6:if(mass[1][2]=='O'||mass[1][2]=='X'){error;goto b;}mass[1][2]='O';break;
            case 7:if(mass[2][0]=='O'||mass[2][0]=='X'){error;goto b;}mass[2][0]='O';break;
            case 8:if(mass[2][1]=='O'||mass[2][1]=='X'){error;goto b;}mass[2][1]='O';break;
            case 9:if(mass[2][2]=='O'||mass[2][2]=='X'){error;goto b;}mass[2][2]='O';break;
            default:error;
            goto b;
        }
        break;
    default: error;
    }
}
 
char win(char player)
{
    if((mass[0][0]==player&&mass[1][0]==player&&mass[2][0]==player)
       || (mass[1][0]==player&&mass[1][1]==player&&mass[1][2]==player)
       || (mass[2][0]==player&&mass[2][1]==player&&mass[2][2]==player)
       || (mass[0][0]==player&&mass[0][1]==player&&mass[0][2]==player)
       || (mass[0][1]==player&&mass[1][1]==player&&mass[2][1]==player)
       || (mass[0][2]==player&&mass[1][2]==player&&mass[2][2]==player)
       || (mass[0][0]==player&&mass[1][1]==player&&mass[2][2]==player)
       || (mass[2][0]==player&&mass[1][1]==player&&mass[0][2]==player))
        {
           won=true;
        if(player=='X'){cout<<"Player X won\n";pause;goto d;}
        if(player=='O'){cout<<"Player O won\n";pause;goto d;}
        }nobody=nobody+1;
    if (nobody==9)
    {
        goto d;
    }return 0;
    d:
    int BoxResult;
    BoxResult = MessageBox(console,"Start new game?","X&O",MB_YESNO);
    switch(BoxResult)
    {
    case IDYES:
    won=false;
    newgame();
    showboard();
    break;
    case IDNO:
    MessageBox(console, "Bye","X&O",MB_OK);
    exit(1);
    break;
    }
    }
 
int main()
{
    srand(time(0));
    SetConsoleTitle("X&O");
    MessageBox(console,"Game created by Ladyuk Andrew","X&0",MB_OK);
    do{
    showboard();
    playerturn('X');
    showboard();
    win('X');
    playerturn('O');
    showboard();
    win('O');
    }while(won!=true);
}
0
95 / 0 / 1
Регистрация: 12.07.2016
Сообщений: 73
03.12.2016, 15:23  [ТС] 4
Спасибо большое!
0
1458 / 924 / 807
Регистрация: 30.04.2016
Сообщений: 3,184
03.12.2016, 16:36 5
BazNick, Вот мой вариант игры. Дарю

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
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <string>
 
using namespace std;
 
int main()
{
    const int N = 3;
    int x, y, k, dgt;
    char A[N][N], c, z;
    string s, a, b, name1, name2;
    a = "НОЛИКИ";
    b = "КРЕСТИКИ";
    z = '0';
    c = 'X';
    cout << "Игра крестики-нолики:" << endl;
    cout << "Введите имя первого игрока: ";
    getline(cin, name1);
    cout << "Введите имя второго игрока: ";
    getline(cin, name2);
    cout << "За кого ходит первый игрок?(введите цифру):" << endl;
    cout << "0: 1" << endl;
    cout << "X: 2" << endl;
    cout << "Цифра: ";
    cin >> dgt;
    for (int i = 0; i < N; i++)
    {
    for (int j = 0; j < N; j++)
    {
    A[i][j] = '?';
    cout << A[i][j] << " ";
    }
    cout << endl;
    }
    for (int i = 0; i < 9; i++)
    {
    if ((!(i % 2)) && (dgt == 1)) s = a;
    if ((!(i % 2)) && (dgt == 2)) s = b;
    if ((i % 2) && (dgt == 1)) s = b;
    if ((i % 2) && (dgt == 2)) s = a;
    mylabel:
    cout << "Сделайте ваш ход (" << s << ")" << endl;
    cout << "Строка: ";
    cin >> x;
    cout << "Столбец: ";
    cin >> y;
    x--;
    y--;
    if (A[x][y] != '?')
    {
    system("cls");
    for (int i = 0; i < N; i++)
    {
    for (int j = 0; j < N; j++)
    {
    cout << A[i][j] << " ";
    }
    cout << endl;
    }
    cout << "Данная позиция занята!" << endl;
    goto mylabel;
    }
    if ((!(i % 2)) && (dgt == 1)) A[x][y] = z;
    if ((!(i % 2)) && (dgt == 2)) A[x][y] = c;
    if ((i % 2) && (dgt == 1)) A[x][y] = c;
    if ((i % 2) && (dgt == 2)) A[x][y] = z;
    system("cls");
    k = 0;
    for (int i = 0; i < N; i++)
    {
    for (int j = 0; j < N; j++)
    {
    cout << A[i][j] << " ";
    }
    cout << endl;
    }
    if (((A[0][0] == '0') && (A[0][1] == '0') && (A[0][2] == '0')) ||
        ((A[1][0] == '0') && (A[1][1] == '0') && (A[1][2] == '0')) ||
        ((A[2][0] == '0') && (A[2][1] == '0') && (A[2][2] == '0')) ||
        ((A[0][0] == '0') && (A[1][0] == '0') && (A[2][0] == '0')) ||
        ((A[0][1] == '0') && (A[1][1] == '0') && (A[2][1] == '0')) ||
        ((A[0][2] == '0') && (A[1][2] == '0') && (A[2][2] == '0')) ||
        ((A[0][0] == '0') && (A[1][1] == '0') && (A[2][2] == '0')) ||
        ((A[2][0] == '0') && (A[1][1] == '0') && (A[0][2] == '0')) ||
        ((A[0][0] == 'X') && (A[0][1] == 'X') && (A[0][2] == 'X')) ||
        ((A[1][0] == 'X') && (A[1][1] == 'X') && (A[1][2] == 'X')) ||
        ((A[2][0] == 'X') && (A[2][1] == 'X') && (A[2][2] == 'X')) ||
        ((A[0][0] == 'X') && (A[1][0] == 'X') && (A[2][0] == 'X')) ||
        ((A[0][1] == 'X') && (A[1][1] == 'X') && (A[2][1] == 'X')) ||
        ((A[0][2] == 'X') && (A[1][2] == 'X') && (A[2][2] == 'X')) ||
        ((A[0][0] == 'X') && (A[1][1] == 'X') && (A[2][2] == 'X')) ||
        ((A[2][0] == 'X') && (A[1][1] == 'X') && (A[0][2] == 'X')))
    {
    k++;
    cout << "Игра закончена! ";
    if ((A[x][y] == z) && (dgt == 1)) cout << name1 << " победил(a)!" << endl;
    if ((A[x][y] == c) && (dgt == 2)) cout << name1 << " победил(а)!" << endl;
    if ((A[x][y] == c) && (dgt == 1)) cout << name2 << " победил(а)!" << endl;
    if ((A[x][y] == z) && (dgt == 2)) cout << name2 << " победил(а)!" << endl;
    break;
    }
    }
    if (!(k)) cout << "Игра закончилась вничью!" << endl;
    system("pause");
    return 0;
}
0
95 / 0 / 1
Регистрация: 12.07.2016
Сообщений: 73
03.12.2016, 16:56  [ТС] 6
Блин, спасибо огромное!))
Я вот тут уже сделал)

Хочу сделать эффект рандомности ходов компа)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2016, 16:56

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

Крестики нолики
Недавно начал изучать C++. Фактически это первый язык программирования который я осваиваю. Решил...

Крестики нолики
Здравствуйте. Никак не получается определить, кто победил, всегда выводит ничью. Почему? ...

C++ Крестики нолики
Докончите программу, Реализуйте проверку на победу одного из игроков, минимум две комбинации для...

Крестики нолики на С
Здраствуйте. Помогите пожалуйста написать игру в консоли. Это крестики нолики поле 3х3. Буду...


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

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

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