Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2013, 10:59   #1
Pepsy
Новичок
Джуниор
 
Регистрация: 06.04.2013
Сообщений: 1
По умолчанию Интеллект компьютера в игре покер на костях

Правила:
Необходимо также 5 кубиков. Цель игры: составить наиболее выгодную покерную комбинацию из пяти игральных костей. Количество игроков может быть любым, но лучше всего, если число играющих не будет превышать пяти. Каждый игрок кидает одну игральную кость, чтобы определить очерёдность ходов. Начинает тот у кого выпала старшая кость. Каждый игрок кидает все пять игральных костей, после чего он может заявить, что доволен результатами или перекинуть любое количество костей (от одной до пяти). После второго броска у него снова есть выбор — принять полученную комбинацию или снова перекинуть кости, причём он не имеет права трогать те кости, которые остались нетронутыми после первого сбрасывания. Таким образом, у каждого игрока есть три попытки собрать наиболее выгодную комбинацию. После третьего сбрасывания вне зависимости от результата ход переходит к игроку сидящему слева. В конце круга, когда все игроки сделали свои ходы, выигрывает тот у кого окажется высшая комбинация.
Возможны следующие комбинации (в порядке убывания):
Покер — пять костей одного вида
Каре — четыре кости одного вида
Фулл хаус — три кости одного вида + пара
Тройка — три кости одного вида
Две пары — две кости одного вида и две кости другого вида
Пара — две кости одного вида
Наивысшее очко — в случае, если ни у кого не выпало покерной комбинации выигрывает игрок с наивысшей суммой очков среди пяти несовмещающихся в комбинацию баллов, выпавших на игральных костях.
Если комбинации двух игроков одинаковы (например, у двух игроков по Каре), то выигрывает тот у кого выше очки, выпавшие на костях. Если у игроков одинаковые комбинации, то они разыгрывают партию друг с другом.
У меня все получилось, кроме фуллхауса. Если не сложно, то помогите хотя бы алгоритмом. Вот пример кода Каре
Код:
for( int a=0, b=1, c=2, d=3; c<5; d++)
{
if (d==a||d==b||d==c) continue;
if (comp[a]==comp[b]==comp[c]==comp[d])
{
intel[a]=intel[b]=intel[c]=intel[d]=false;
kare=true;
}
if (d==4)
{
a++;
b++;
c++;
d=-1;
}
}
if(comp[0]==comp[1]==comp[3]==comp[4])
{
intel[0]=intel[1]=intel[3]=intel[4]=false;
kare=true;
}
И Тройки
Код:
for(int a=0, b=1, c=2; b<5; c++)
                        {
                            if(c==a||c==b) continue;
                            if(comp[a]==comp[b]==comp[c])
                            {
                                intel[a]=intel[b]=intel[c]=false;
                                three=true;
                            }
                            if (c==4)
                            {
                                a++;
                                b++;
                                c=-1;
                            }
                        }
                        if (comp[0]==comp[2]==comp[4]) three=true;
Pepsy вне форума Ответить с цитированием
Старый 06.04.2013, 21:17   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
У меня все получилось, кроме фуллхауса. Если не сложно, то помогите хотя бы алгоритмом. Вот пример кода Каре
Знаете, без комментариев непонятно ровным счётом ничего. Что за массивы intel и comp, какую роль они играют, что в них должно храниться...
Вот пример кода, принимающего набор (массив из пяти величин, упорядоченный по возрастанию) и возвращающего признак того, является ли эта комбинация произвольным фулл-хаусом:
Код:
bool IsFullhouse(Dice combination[5]){
  if(combination[0] != combination[1]) return false;
  if(combination[1] != combination[2]){
    if(combination[2] != combination[3]) return false;
    if(combination[3] != combination[4]) return false;
    return true;
  } else {
    if(combination[2] == combination[3]) return false;
    if(combination[3] != combination[4]) return false;
    return true;
  }
}
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать отображения карт в игре покер на делфи Dirt Помощь студентам 14 24.02.2015 18:25
Искусственный интеллект. danielskachkov Фриланс 3 30.04.2012 14:04
Искусственный интеллект Sweta Помощь студентам 4 25.11.2011 02:06
Интеллект-карты CodeExpert Свободное общение 3 22.08.2010 18:25
Искусственный интеллект starindustry Помощь студентам 2 07.11.2008 10:50