Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Табулирование функции через массив Она есть. Она работает. Но то, какие результаты она выдает - не влезает ни в какие мыслимые и немыслимые пределы. Так может кто-нибудь уже встречался с таким и подскажет, в чём ошибка? Возможно, я... https://www.cyberforum.ru/ cpp-beginners/ thread1416556.html Вычислить выражение sin(sin(sin...(x))...) C++
Вычислить y=sinsin...sinx, где количество повторений sin=n. #include <iostream> #include <cmath> using namespace std; int main() { double x, y;
C++ Найти последний из положительных элементов, массива Y, содержащего N элементов Найти последний из положительных элементов, массива Y, содержащего N элементов https://www.cyberforum.ru/ cpp-beginners/ thread1416546.html C++ Разные результаты при каждом запуске https://www.cyberforum.ru/ cpp-beginners/ thread1416525.html
Всем доброго времени суток, посмотрел тут на форуме ты мы и не нашел ответ. У меня проблемка такая, я не давно начал программировать на с++ и возможно, что-то сделал не так. Я написал программу код...
Компилятор не находит функцию GetUserName C++
#include "stdafx.h" #include <iostream> #include <Windows.h> #include <locale> using namespace std; BOOL GetUserName( LPTSTR lpBuffer, LPDWORD nSize
C++ Сортировка Шелла для двусвязного списка Здравствуйте! Уже которую неделю я пытаюсь реализовать сортировку Шелла с возможностью выбора длин промежутков для двусвязного списка, и все никак не выходит. Помогите, пожалуйста! https://www.cyberforum.ru/ cpp-beginners/ thread1416518.html
C++ ASCII игра https://www.cyberforum.ru/ cpp-beginners/ thread1416515.html
В жизни программиста частенько появляется желание написать свою игру, оно же появилось и у меня. Но писать захотелось что-то оригинальное и с нуля. В голову прилетела идея написать "красивую" ASCII...
C++ Графы. Покритикуйте код
Нужно помощь тех кто работает и пишет хороший и красивый код. У меня построено три матрицы, подскажите как улучшить код. Где можно ускорить и где сохранить память, ну и укажите на Г*внокод...
C++ Вычислить сумму заработной платы https://www.cyberforum.ru/ cpp-beginners/ thread1416503.html
Количество строк: 5. Столбцы: Фамилия, Количество отработанных дней, Тариф. Вычислить сумму заработной платы. Не могу понять как записать тут сумма зарплаты:( помогите,буду очень благодарна
C++ Написать функцию полного удаления списка на основе связного хранения https://www.cyberforum.ru/ cpp-beginners/ thread1416477.html
Помогите составить такую функцию! Добавлено через 14 минут *связного
C++ Из группы подряд идущих элементов массива с одинаковыми значениями оставить только первый
Доброй ночи.) Дан список из n целых чисел a1,a2,...,an. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый. Спасибо большое!)
C++ Положение максимального элемента в каждой строке https://www.cyberforum.ru/ cpp-beginners/ thread1416449.html
В матрице Х(n,n) поменять местами элементы на главной и побочной диагоналях. Найти положение максимального элемента в каждой строке. Помогите с нахождением максимального в каждой строке, ато как не...
3 / 3 / 2
Регистрация: 14.11.2013
Сообщений: 35
0

Выстроить на поле четыре фишки в ряд - C++ - Ответ 7455238

08.04.2015, 23:13. Показов 426. Ответов 0
Метки (Все метки)

Четыре в ряд. Цель - выставлять по очереди фишки на поле 6х7 (причем фишки падают сверху и заполняют с нижней строки по верхнюю) пока у одного из играющих не выстроится четыре своих фишки по диагонали, вектикали или горизонтали.
Алгоритм ходов программы против игрока основан на альфа-бета отсечении. Ходы компьютера описаны в AI() и AB_minmax. Не могу понять почему компьютер всегда заполняет сначала полностью первую колонну поля, потом вторую, и т.д., т.е. алгоритм не работает.
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
int AI(char player,int a, int b)
{
    float value[2]={INT_MAX,0}; //value[0]-рейтинг хода, value[1]-номер столбца хода
    for(int x=0; x<WIDTH; x++)
       {
            wins=0;     //общее количество высчитанных побед
            winner=0;   //разница между кол-вом побед игрока и компьютера
            if(colH[x]!=0)  //colH[] - массив хранящий количество фишек в каждом столбце (индикатор заполненности)
                {
                    place[colH[x]][x]=player;    //place- двумерный массив, хранящий поле.
                                                          //Player=254=компьютер, player=15=игрок
                    if(won()==2)                     //индикатор победы(если 4 в ряд)
                        {
                            place[colH[x]][x]=' ';
                            return x;
                        }
                    int cur=-(100*AB_minmax(true,x,1,a,b));
                    if(wins!=0)
                      cur-=((100*wins)/winner);
                    if(value[0]>cur)
                        {
                            value[0]=cur;
                            value[1]=x;
                        }
                    place[colH[x]][x]=' ';
                }
        }
        return value[1];
}
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
int AB_minmax( bool pp, int hold,int recurDepth,int a,int b)
{
    char coin;
    int cur,chance=0;
    if (pp) coin=254;
    else    coin=15;
 
    for(int x=0; x<WIDTH; x++)
        {
            if(colH[x]!=0)
                {
                    place[colH[x]][x]=coin;
                    colH[x]--;
                    if(won()!=0)
                        {
                            wins++;
                            if(coin==254)
                                winner++;
                            else
                                winner--;
                            place[colH[x]][x]=' ';
                            colH[x]++;
                            return -1;
                        }
                    place[colH[x]][x]=' ';
                    colH[x]++;
                }
        }
    if(recurDepth<=MAX_RECURDEPTH)
        {
            if (pp)
                {
                    cur=-99999;
                    for(int x=0; x<WIDTH; x++)
                        {
                            if(colH[x]!=0)
                                {
                                    place[colH[x]][x]=coin;
                                    colH[x]--;
                                    if(won()!=0)
                                        {
                                            wins++;
                                            if(coin==254)
                                                winner++;
                                            else
                                                winner--;
                                            place[colH[x]][x]=' ';
                                            colH[x]++;
                                            return -1;
                                        }
                                    cur=max(cur, AB_minmax(!pp,x,recurDepth+1,a,b));
                                    a=max(a, cur);
                                    place[colH[x]][x]=' ';
                                    colH[x]++;
                                    if (b<=a)
                                       break;
                                }
                        }
                }
            else
                {
                    cur=99999;
                    for(int x=0; x<WIDTH; x++)
                        {
                            if(colH[x]!=0)
                                {
                                    place[colH[x]][x]=coin;
                                    colH[x]--;
                                    if(won()!=0)
                                        {
                                            wins++;
                                            if(coin==254)
                                                winner++;
                                            else
                                                winner--;
                                            place[colH[x]][x]=' ';
                                            colH[x]++;
                                            return -1;
                                        }
                                    cur=min(cur, AB_minmax(pp,x,recurDepth+1,a,b));
                                    b=min(b, cur);
                                    place[colH[x]][x]=' ';
                                    colH[x]++;
                                    if (b<=a)
                                        break;
                                }
                        }
                }
        }
        return -cur;
}
Подскажите, пожалуйста что может быть не так. При необходимости могу добавить код полностью. Заранее благодарю!

Вернуться к обсуждению:
Выстроить на поле четыре фишки в ряд C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2015, 23:13
Готовые ответы и решения:

Выстроить блоки в ряд
Помогите разобраться. Почему у меня блоки идут в столбец , а не в строку? &lt;div...

Выстроить в один ряд по горизонтали
Привет! Не подскажет кто знает как выстроить в ряд вот это: вот код: &lt;script...

Пять блоков выстроить в ряд
Скажите, каким образом можно выстроить в один ряд пять div-ок, чтобы при разных размерах окна...

Как выстроить кнопки в ряд?
Не могу допетрить, как перенести чекбокс и кнопки delete и edit в один ряд с full news, если...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2015, 23:13
Помогаю со студенческими работами здесь

Выстроить в в ряд по 3 штуки иконки альбомов
Битый день сижу и не могу вникнуть, выкладываю альбомы с фотографиями на сайт, прописываю код на...

Выстроить три блока в ряд по горизонтали
Доброго времени суток, подскажите пожалуйста как разместить три блока в ряд по горизонтали, в...

Задача ёжик - Собрать все фишки, расставленные на поле
Смысл компьютерной игры “Ежик” заключается в том, чтобы собрать все фишки, расставленные на поле...

Два блока нужно выстроить в ряд используя display:inline-block
Здравствуйте! Изучаю CSS, столкнулся с проблемой. Задача такая: Два блока нужно выстроить в ряд...

Перемещение фишки в поиске другой фишки
Здравствуйте ! Помогите, пожалуйста, решить задачу по перемещению фишки по полю 8 на 8. На...

Отцентровать четыре картинки в ряд
Как отцентровать четыре картинки в ряд? .wrap-glob { width: 960px; margin: 0 auto; } ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru