Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
#1

Крестики-нолики, проверка - C++

28.07.2013, 20:13. Просмотров 498. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста как тут реализовать проверку по прямой и по диагонали?

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
#include <iostream>
#include <cmath>
using namespace std;
 
class Board
{
protected:
    char board[3][3];
    int x, y;
public:
    Board(){};
    ~Board(){};
    virtual void init_board()
    {
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
                board[i][j] = '-';
        }
    }
 
    virtual void out_board()
    {
        system ("cls");
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
                cout << " " << board[i][j];
            cout << endl;
        }
    }
    virtual void move(){}
    virtual void test(){}
};
 
class Game : public Board
{
public:
     void test()
    {
        // код
    }
};
 
class Player : public Game
{
public:
        void move()
    {
        static int count = 0;
        cin >> this->x >> this->y;
        count++;
        if (count == 1)
        board[x-1][y-1] = 'X';
        if (count == 2)
        board[x-1][y-1] = '0', count = 0;
    }
};
 
 
 
 
void main()
{
    Board *obj[2];
 
    obj[0] = new Player;
    obj[0] -> init_board();
    obj[0] -> out_board();
    while (1)
    {
        cout << "First player: " << endl;
        obj[0] -> move();   
        obj[0] -> out_board();
        obj[0] -> test();
        cout << "Second player: " << endl;
        obj[0] -> move();   
        obj[0] -> out_board();
        obj[0] -> test();
    }
    cin.get();
    cin.get();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Крестики-нолики, проверка (C++):

Игра "Крестики нолики", почему не работает проверка окончания? - C++
#include &lt;iostream&gt; using namespace std; int main () { int a,k=0; char mas; while(k&lt;10) { for(int...

Крестики нолики - C++
Уж слишком запутался даже в такой простом коде: #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;string&gt; #include &lt;iomanip&gt; ...

крестики-нолики - C++
Может у кого-то есть шаблон,чтобы расчертить поле в клетку,например 3x3. Покажите пожалуйста))

крестики нолики - C++
Я дошел до проверки или кто-то выиграл и тут мне немного не понравилось.Для того чтобы проверить есть ли победитель, я сравниваю элементы...

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

“Крестики-нолики” - C++
Напишите игру “Крестики-нолики”. Программа выводит игровое поле для двух игроков, проверяет правильность ходов, следит за ситуацией на...

4
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 163
28.07.2013, 21:54 #2
Просто напиши на бумажке: board [0] [0] board [0] [1] и т.д.
После этого будет наглядно, как изменяются "координаты" и понятно, как реализовать циклы
1
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
28.07.2013, 22:24 #3
Я делал так: было 3 цикла, по горизонтали, вертикали, диоганаль. переменная count_X and count_О, они считают количество крестиков и ноликов. После каждого прохода, например после строки или столбца, проверялось их количество если один из них равен 3 то игра завершалась, игроку присваивалась победа.
1
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
28.07.2013, 23:14  [ТС] #4
голова уже не варит, как это поставить на цикл?
C++
1
2
3
4
5
if(board[0][2]=='X'&&board[1][1]=='X'&&board[2][0]=='X' || board[0][0]=='X'&&board[1][1]=='X'&&board[2][2]=='X') cout<<" win"; //диагонали
     
     if(board[0][0]=='X'&&board[0][1]=='X'&&board[0][2]=='X' || board[1][0]=='X'&&board[1][1]=='X'&&board[1][2]=='X' || board[2][0]=='X'&&board[2][1]=='X'&&board[2][2]=='X') cout<<" win"; //горизонталь
    
     if(board[0][0]=='X'&&board[1][0]=='X'&&board[2][0]=='X' || board[0][1]=='X'&&board[1][1]=='X'&&board[2][1]=='X' || board[0][2]=='X'&&board[1][2]=='X'&&board[2][2]=='X') cout<<" win"; //вертикаль
0
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
29.07.2013, 01:50 #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
for (int i = 0; i < 3; ++i) // горизонталь
        for (int j = 0; j < 3; ++j)
{
if(board[i][j] == X)
            {
                ++count_X;
                count_O = 0;
            }
            else if (board[i][j] == O)
            {
                ++count_O;
                count_X = 0;
            }
            else
            {
                count_O = 0;
                count_X = 0;
            }
            if (count_O == 5)
                return O_Win;
            if(count_X == 5)
                return X_Win;
}
 
count_O = 0;
    count_X = 0;
for (int i = 0; i < 3; ++i) // вертикаль
        for (int j = 0; j < 3; ++j)
{
if(board[j][i] == X)
            {
                ++count_X;
                count_O = 0;
            }
            else if (board[j][i] == O)
            {
                ++count_O;
                count_X = 0;
            }
            else
            {
                count_O = 0;
                count_X = 0;
            }
            if (count_O == 5)
                return O_Win;
            if(count_X == 5)
                return X_Win;
}
X_WIN, O_WIN просто перечисление. enum
1
29.07.2013, 01:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 01:50
Привет! Вот еще темы с ответами:

Крестики-нолики - C++
Доброго времени суток! Вот, решил для курсовой работы написать игру Крестики-нолики. Но мне требуется маленькая помощь. Подскажите, как...

Крестики нолики - C++
Нужно написать программу крестики нолики.

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

Крестики нолики 10 на 10 - C++
Нашел код крестики нолики 4 на 4 но не компилируется, там ошибки почему то в &lt;&lt; хочу сделать из него 10 на 10 Может кто нибудь...


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

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

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