Psilon
Master of Orion
5929 / 4828 / 634
Регистрация: 10.07.2011
Сообщений: 14,439
|
23.06.2014, 19:37
|
|
Вот мое виденье, в плюсах я не очень шарю, так что просьба не бить ногами
Кликните здесь для просмотра всего текста
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
| #include <iostream>
using namespace std;
const int N = 3;
const char Empty = '-';
char map[N][N];
void ClearMap();
void DrawMap();
int Turn(const char*, char);
int Win(int, int, char);
int main()
{
ClearMap();
int i = 0;
for (; i < 9 && !(Turn("Player 1", 'X') || Turn("Player 2", '0')); i++)
{
}
if (i == 9)
cout << "DRAW!" << endl;
return 0;
}
void ClearMap()
{
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
map[i][j] = Empty;
}
void DrawMap()
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
cout << '|' << map[i][j];
cout << '|' << endl;
}
}
int Turn(const char* playername, char symbol)
{
int x, y;
DrawMap();
cout << playername << "'s turn. Enter coordinates X and Y" << endl;
cin >> x >> y;
while (x < 0 || y < 0 || x > 3 || y > 3 || map[x][y] != Empty)
{
cout << "Invalid coordinates. Try again" << endl;
cin >> x >> y;
}
map[x][y] = symbol;
int win = Win(x, y, symbol);
if (win)
cout << playername << " WIN!" << endl;
return win;
}
int Win(int x, int y, char symbol)
{
//проверяем горизонталь
int i;
for (i = 0; i < 3 && map[i][y] == symbol; i++)
{
}
if (i == 3)
return 1;
//проверяем вертикаль
for (i = 0; i < 3 && map[x][i] == symbol; i++)
{
}
if (i == 3)
return 1;
//возвращаем диагонали
return map[0][0] == symbol && map[1][1] == symbol && map[2][2] == symbol
|| map[0][2] == symbol && map[1][1] == symbol && map[2][0] == symbol;
} |
|
0
|