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

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

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

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

28.07.2013, 20:13. Просмотров 448. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2013, 20:13     Крестики-нолики, проверка
Посмотрите здесь:

Крестики-нолики - C++
Добрый вечер. Хочу попробовать написать свои крестики-нолики. Игру еще не дописал, но уже появилась следующая проблема. По идее, если я...

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

Крестики нолики - C++
Требование к игре: -игра в консольным окне( самое простое ) -игра с компьютером. Нужна самая простая игра. Желательно на си, чтоб...

Крестики-нолики - C++
Здраствуйте,помогите пожалуйсто с програмкои крестики нолики проблема не могу в вести символы. Вот собственно сам код рамки . ...

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

Крестики-нолики - C++
Доброго времени суток. Решил написать крестики-нолики, но возник какой-то косяк на ровном (и естесно самом неожиданном) месте. Коротко...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryabchik
18 / 18 / 1
Регистрация: 09.01.2013
Сообщений: 161
28.07.2013, 21:54     Крестики-нолики, проверка #2
Просто напиши на бумажке: board [0] [0] board [0] [1] и т.д.
После этого будет наглядно, как изменяются "координаты" и понятно, как реализовать циклы
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
28.07.2013, 22:24     Крестики-нолики, проверка #3
Я делал так: было 3 цикла, по горизонтали, вертикали, диоганаль. переменная count_X and count_О, они считают количество крестиков и ноликов. После каждого прохода, например после строки или столбца, проверялось их количество если один из них равен 3 то игра завершалась, игроку присваивалась победа.
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"; //вертикаль
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 01:50     Крестики-нолики, проверка
Еще ссылки по теме:

Игра [Крестики Нолики] C++ - C++
Всем привет. Возможно кому-то пригодится исходный код игры . Все очень просто и легко. Компилятор Borland C++ Builder 6. #pragma...

И снова крестики-нолики - C++
Привет! Есть код: #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; char PlayerName1, ...

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

Крестики-нолики ревью - C++
Здравствуйте! Учусь программировать сам по книжке и гуглу, а хочется поучиться у живых людей. Вот моя первая самостоятельная программка -...

Игра крестики нолики - C++
Помогите пожалуйста. Нужна очень срочно игра крестики-нолили Добавлено через 8 минут Люди спасите!!!


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

Или воспользуйтесь поиском по форуму:
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
Yandex
Объявления
29.07.2013, 01:50     Крестики-нолики, проверка
Ответ Создать тему
Опции темы

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