Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 24.11.2019
Сообщений: 5
1

Проверка победителя в крестиках-ноликах на большом поле,где кол-во необходимых знаков для победы задается пользователем

25.11.2019, 09:42. Показов 5829. Ответов 1

Author24 — интернет-сервис помощи студентам
Пытаюсь реализовать выбор победителя большом поле,но получается только для поля три на три. Это часть программы где проходит проверка на победу. Я пробовал вводить в main stroka = 3,stolb =3 и kor1 =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
//функция поиска победы по диагонали
  bool checkdiaog(char sym)//sym-символ либо игрока либо компьютера('X','0')
    {
        int t = 0;
        int r = 0;
        for (int k = 0; k < stroka; k++)//Stroka -кол-во строк в нашей матрице
        {
            if (massiv[k][k] == sym)//проверка победы по главной диагонали
            {
                t++;//счетчик входов в if
            }
            if (massiv[stroka - k - 1][k] == sym)//проверка победы по побочной диагонали
            {
                r++;//счетчик входов в if
            }
        }
        if (t == kol1)//kol1-кол-во крестиков или ноликов необходимых для победы
        {
            return true;
        }
        else if (r == kol1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    //проверка победы по горизонтали и вертикали
    bool checkLine(char sym)//sym-символ либо игрока либо 
    компьютера('X','0')
    {
        int t;
        int r;
        for (int k = 0; k < stroka; k++)//stroka - кол-во строк в нашем двумерном массиве
        {
            t = 0;
            r = 0;
            for (int s = 0; s < stolb; s++)//stolb-кол-во столбцов в нашем двумерном массиве
            {
                //проверка горизонтали
                if (massiv[k][s] == sym)//massiv-это двумерный массив(char) в котором хранятся все шаги игрока('X') и компьютера('0') до текущего момента
                {
                    t++;
                    if (t == kol1)//кол-во крестиков или ноликов необходимых для победы
                    {
                        return true;
                    }
                }
                //проверка вертикали
                if (massiv[s][k] == sym)
                {
                    r++;
                    if (r == kol1)
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2019, 09:42
Ответы с готовыми решениями:

Определение победителя в крестиках ноликах
Не знаю как определять победителя в игре,принцип игры основан на кнопках(QPushButton),при нажатии...

Проверка на победу в крестиках-ноликах
Здраствуйте! Я сделал игру крестики-нолики на языке с++, но столкнулся с тем, что у меня нету...

Игра по сети в «Го» («крестики-нолики» на безразмерном (большом) поле. Для победы необходимо выстроить пять в
Игра по сети в «Го» («крестики-нолики» на безразмерном (большом) поле. Для победы необходимо...

Бред в крестиках ноликах
Проблема. Написал цикдические крестики нолики ( в конце игры спрашивает хотите сыгарть еще или...

1
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
25.11.2019, 10:36 2
очевидно, тут ты подсчитываешь кол-во вообще любых крестиков либо ноликов, а не только подряд идущих.
Например, при kol1=4 sym='X' - наличие на поле строки XXOOXX выдаст тебе true, что неверно.
Подсчитывай только подряд идущие символы.
По поводу эффективности теперь.
Проверяй не всё поле, а только "лучи длиной kol1" влево-вправо, вверх вниз, по диагонали 1 и 2.
0
25.11.2019, 10:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2019, 10:36
Помогаю со студенческими работами здесь

Бот в крестиках-ноликах
Здравствуйте. Суть такова: в код игры крестики- нолики нужно встроить бота, а также добавить третий...

Очередность ходов в крестиках ноликах
Как сделать чтоб крестики и нолики ставились по очереди?

Абстракция игрока в крестиках-ноликах
Я пишу крестики-нолики. хочу создать единый метод для проведения игры внезависимости от типа...

Реализовать действие в крестиках ноликах
помогите реализовать так чтобы он выдовал кто победитель(или ничья) и когда закончина игра. Заранее...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru