for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Игры Разума
   :: Помощь сайту :: 

нужен алгоритм
wolf3d

Сообщений: 53
Дата: 12.03.11 10:54:58ОтветитьЦитировать
Привет всем
В общем нужна помощь – давайте всем скопом разработаем алгоритм
Суть: есть такая игра карточная – название из инета – UpDown (это если интересно правила почитать)
Мне она нравится с юности – а на работе частенько, пока база пересчитывается, делать нечего – вот и рублюсь в карты) 1000-у уже просто ненавижу)))
Порылся в инете – реализации UpDown не нарыл, решил свою написать. Пишу на фоксе9. Как и в 1000-е там есть торговля и розыгрыш. Торговлю написал, а вот на розыгрыше завис напрочь.

Вот по розыгрышу и нужен алгоритм.
Итак суть:
Есть колода 36 карт. Это массив kard(36), причем принимаем что туз пик=36, король пик=35, …,туз крестей=27, …, туз бубей=18 и тд
Старшинство карт – как в дураке. Одна из мастей – козыри. Заходит тот кто взял последнюю взятку.
Есть массив стола – stol(5) – это просто те карты которые игроки уже положили на стол на данном кону(е).
Есть игроки – от 2 до 5. У каждого свои массивы:
igKard(5,18) – карты у игроков на руках – отсортированы по убыванию на каждом игроке, «лишние ячейки» = 0. почему 18? При игре вдвоем по 18 карт на игрока.
igCut(5,5) – уже ВЫШЕДШИЕ карты(обьяснять подробнее думаю не нужно).
Игрок 1 – человек.
Как я прикинул – в розыгрыше все сводится к двум понятиям:
1. Либо это Первый ход (ложащий первую карту на стол)
2. Либо это последующий – ложит карту после заходящего игрока
Получается что когда компьютерный игрок должен сходить, то:
1. если он первый(заходящий) – анализирует вышедшие карты, анализирует свои карты, выстраивает массив карт (igkard) по убыванию карт как он будет ходить и ходит с первой карты в массиве
2. если он ходит второй, третий и тд - анализирует вышедшие карты, анализирует карты на столе, анализирует свои карты, выстраивает массив карт (igkard) по убыванию карт как он будет ходить и ходит с первой карты в массиве

Вот КАК это реализовать я и немогу разрулить

С нетерпением жду ваших светлых мыслей



Исправлено: wolf3d, 12.03.11 10:58
Ratings: 0 negative/0 positive

Re: нужен алгоритм
of63
Автор

Сообщений: 13869
Откуда: Н.Новгород
Дата: 13.03.11 21:13:57ОтветитьЦитировать
Так оно, как хороший игрок соображает, так и строить алгоритм, и излагать его на языке. Там, наверное, массивы карт, с "весами", сортировки - сплошная математика вероятностей. Раз "торговлю" написал, значит, и игру напишешь, т.е. представление каждого игрока о картах противников, с учетом наличия своих карт, которые известны, +прикуп (торговля), возможно, с прсчетом ходов противника (это будет вообще как шахматная прога ДипБлю навроде) Надо нАчать хоть как то, а там пойдет.

Вот кстати и алгоритм: допусти есть банк карт, из него мы будем брать карты - т.е. для анализа наличия карт у противников у нас есть этот "банк", он непрерывно уменьшается, с каждым ходом, самое первое, с раздачей, торговлей, ну и т.д. каждый ход открывает )уменьшает) этот "банк", и с каждым ходом мы производим "перерасчет"...

(Эту игру не знаю, в 1000 играл, но забыл детали, и в преф. Вспомнил, в детстве играли в "буру", сдается по 3 карты из колоды, правила - тривиальные, старшая карта кроет младшую, плюс детали, типа "три козыря - это бура, предьявляется вне очереди" что-ли, так вот, почему-то восхищались (ну, дети) фразой из фильма "он постиг все тайны буры", не помню какого фильма, а может анека )

Интересно, 36 карт, в конкретных правилах игры (в дурака, например), комп способен за разумное время удержать в "памяти" и проанализировать все возможные ситуации (во время игры)



Исправлено: of63, 13.03.11 22:31
Ratings: 0 negative/0 positive

Re: нужен алгоритм
wolf3d

Сообщений: 53
Дата: 14.03.11 10:38:12ОтветитьЦитировать
of63
Так оно, как хороший игрок соображает, так и строить алгоритм, и излагать его на языке.
так ведь в этом то и проблема - как я прикинул, если писать исходя из таких соображений, то процедура получается бог знает каких размеров, ибо море переменных выходит

of63
Раз "торговлю" написал, значит, и игру напишешь
да торговля как раз просто - если есть туз- значит +1 взятка, если король и еще карта поменьше,но не дама - +1 взятка и тд.
тут как раз правило работает - "главное начать, а там пойдет" - постепенно алгоритм усложним

а вот с розыгрышем даже не представляю от чего начинать...

of63
это будет вообще как шахматная прога ДипБлю навроде
помню помню - она еще у каспарова выиграла
так вот был у меня когда то первый комп - БК0010-01 - там была на асме написана гулька шахматы - помню гоняли мы ее с дипой - из 10 партий дипа не выиграла ниодной. и это при том что у БК-шки стоял 3 уровень сложности из 5
Это я к тому что на игре в БК работал математический аппарат расчета хода, а у дипы - примерно как предлагаемый тобой ("Так оно, как хороший игрок соображает").

of63
Эту игру не знаю, в 1000 играл, но забыл детали, и в преф.
принцип розыгрыша - такой же как и в префе - заказал 5 взяток - должен взять 5 взяток
Ratings: 0 negative/0 positive

Re: нужен алгоритм
medstrax

Сообщений: 4474
Дата: 14.03.11 11:37:15ОтветитьЦитировать
wolf3d
принцип розыгрыша - такой же как и в префе - заказал 5 взяток - должен взять 5 взяток
Ыыыы. в префе заказать 5 взяток...
Ratings: 0 negative/0 positive

Re: нужен алгоритм
sphinx

Сообщений: 23768
Откуда: Каменск-Уральски
Дата: 14.03.11 11:47:31ОтветитьЦитировать
Цитата:
в префе заказать 5 взяток...

Да, за 5 взяток нарисуют в "гору" немного


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 0 negative/0 positive

Re: нужен алгоритм
wolf3d

Сообщений: 53
Дата: 14.03.11 13:20:03ОтветитьЦитировать
medstrax
wolf3d
принцип розыгрыша - такой же как и в префе - заказал 5 взяток - должен взять 5 взяток
Ыыыы. в префе заказать 5 взяток...
sphinx
Цитата:
в префе заказать 5 взяток...

Да, за 5 взяток нарисуют в "гору" немного
обоим - ключевое слово тут "ПРИНЦИП"
ну а что такое и сочинка и сталинград я в курсе
вы по теме давайте че нить

зы. жена в 3 часа ночи врывается на кухню где муж и еще пара челов в преф рубятся:
- да что ж это такое - в своем доме ночью поспать невозможно!
муж:
- дорогая, во первых не кричи, а во вторых, это уже не наш дом
Ratings: 0 negative/0 positive

Re: нужен алгоритм
Foxtrot

Сообщений: 3377
Откуда: Куда:
Дата: 14.03.11 19:57:15ОтветитьЦитировать
select top 6 * from колода where карта = удачная order by крутость desc
но для такого рода запросов нуна предварительно создать таблицу-колоду, типа
create table колода (id N(2), масть N(1)....)


------------------
P.S. будете проходить мимо, не стесняйтесь, проходите
Ratings: 0 negative/0 positive

Re: нужен алгоритм
of63
Автор

Сообщений: 13869
Откуда: Н.Новгород
Дата: 19.03.11 18:05:01ОтветитьЦитировать
А чтобы "переменных" было меньше, можно придумать "многомерную" переменную - карту, всего из будет 36, у каждой такой переменной (ну, пусть это будет строка в 36-строчном массиве) будут, кроме ее имени, колонки:
- присутствует у игрока А,Б,В, или выбыла
- имеет право к заходу, ... и такие подобные

Плюс написать алгоритм - правила заполнения массива:
- при раздаче: на руках у игроков д.б., например, 10 карт
- при заходе: все должны отдать 1 карту
- перед отдачей карты запустить самый простой и долгий алгоритм - "примерить" каждую карту к отдаче, и оценить риски не взять взятку (если цель - взять взятку), причем примерить для многих случаев, когда каждый игрок может отдать произвольную карту из имеющихся
- ну, дальше найти "ненужные" переборы вариантов для ускорения игры, проанализировав человеческие мотивы (мы же "сразу" отметаем невыгодные варианты) ...
- может придумать "ветки" алгоритма, когда игрока "сажают", т.н. "стратегия" конкретной игры.

Кстати, ДОС-игра в преф. вполне достойно играла, на 386 машинах, и сама - небольшая, и игра сложная, т.е. можно написать такую, наверное, если играть хорошо
Ratings: 0 negative/0 positive

Re: нужен алгоритм
ale9551

Сообщений: 4
Дата: 06.09.11 22:17:39ОтветитьЦитировать
Здравствуйте!
Давно ищу компьютерую версию игры Одесский покер.У этой игры огромное количество поклонников,но по каким то причинам её нет в Интернете.Вам удалось написать алгоритм розыгрыша?Не могли бы Вы написать вот такой вариант игры?Правила следующие:
Играю в эту игру с 1989г.Мне знаком следующий вариант этой игры.

Длинный покер:
Цель игры: набрать большее количество очков
Первый сдатчик определяется жребием, далее игроки сдают карты по очереди.В колоде 36 карт.
Старшинство карт:
6, 7, 8, 9, 10, В, Д, К, Т,7 пик(покер).
Козыри всегда Бубны(по умолчанию),т.е козырь не вскрывается.
Кол-во игроков 2-6.
Карты сдаются строго по одной. Затем начинается торговля, которая идет в порядке очереди. Торговлю начинает игрок, который сидит слева от сдатчика, он должен оценить свои карты и объявить предполагаемую взятку (заказ). Каждый игрок может объявить любую взятку или отказаться от нее, сказав "пас", кроме сдатчика, у которого сумма заявленной им взятки и взяток других игроков не должна быть равна числу карт на руках. После окончания торговли, начинается розыгрыш. Первым ходит игрок, который сидит слева от сдатчика, он выкладывает одну карту, другие игроки могут ее побить или сбросить ненужную карту. На каждую карту необходимо класть карту такой же масти, с которой сделан ход, если нет такой карты, то нужно класть козыря. Бить козырем, если имеется карта подходящей масти нельзя, не бить козырем, если нет масти, но есть козырь то же нельзя. Если отсутствует нужная масть и козырная карта, то можно сбросить любую карту. Тот игрок, который возьмет взятку, начинает следующий ход.За сыгранный пас игроку начисляется 5 очков. Когда все взятки разыграны, то начинают подсчет очков. За взятую в соответствии с заявкой взятку, начисляется по 10 очков за каждую карту. Если игрок взял больше карт, чем заявил при торговле, то ему начисляется по одному очку за каждую взятую карту. Если игрок взял меньше карт, чем заявил при торговле, то за каждую недобранную взятку с него снимается по 10 очков.
Покер(7пик) используется либо как старшая карта(по старшим козырям,при своём ходе),при этом если ход не мой,а Я покрыл(взял) предыдущие карты покером,то следующие после меня игроки скидывать старший козырь не обязаны!
Либо Я могу использовать покер как простую 7 пик(не в коем случае не объявляяя её любой картой,только 7пик-объявляя вслух-"за простую!")
Кол-во сдач определяется кол-вом играющих человек:т.е если играют. 2-е то два раза по 1-й,2 раза по 2-е, 2 раза по 3 карты и так до 12-ти, затем сдаётся 2 раза "втёмную"(по 12 карт). Так закончился первый круг игры(перекур,обсуждение и.т.д)
Второй Круг начинается сдачей карт в обратном порядке(2 раза "втёмную" 2 раза по 12-ти, 2 раза по 11-ти, 2 раза по 10 и так вниз до 1 -й.
Конец игры. Золотые,Мизера и бескозырки не разыгрываютя.
Если играют 3 человека то, раздаётся 3 раза по одной карте, 3 раза по 2-е,3 раза по 3, и.т.д.
Если играют 4 человека то, раздаётся 4 раза по одной карте, 4 раза по 2-е,4 раза по 3, и.т.д.
Если играют 5 человек то, раздаётся 5 раз по одной карте, 5 раз по 2-е,5 раз по 3, и.т.д.
Если играют 6 человек то, раздаётся 6 раз по одной карте, 6 раз по 2-е,6 раз по 3, и.т.д.
Существует правило-"сходимся/расходимся:
При игре вдвоём у сдатчика сумма взяток может быть равной числу сдаваемых карт до двух(после сдачи по 2-е карты в таблице рисуется черта)
При игре о трёх до четырёх человек расходимся после трёх карт (после сдачи по 3 карты в таблице рисуется черта)
При игре пять-шесть человек расходимся после 2-х карт(после сдачи по 2-е карты в таблице рисуется черта)
А так в остальном правила такие же,как описано на сайте(у Вас описан так называемый короткий покер).
Если игрок взял свои взятки,то за взятку-10 очков,если перебор,то 1 очко,недобор- -10 очков за каждую недобранную взятку.
"Втёмную" взятки заказываются наугад,подсчёт очков такой же.
Общее количество сдаваемых карт:
1) при игре вдвоём-по 12 карт.
2) при игре втроём- по 12 карт.
3)при игре вчетвером по 9карт.
4)при игре впятером по 7карт(последняя не вскрывается).
5)при игре вшестером по 6 карт.
За "ренонс" с виновного списывается 50 очков.

С уважением, Алексей.
Ratings: 0 negative/0 positive

Re: нужен алгоритм
wolf3d

Сообщений: 53
Дата: 07.09.11 10:29:13ОтветитьЦитировать
ale9551
Здравствуйте!
Давно ищу компьютерую версию игры Одесский покер.У этой игры огромное количество поклонников,но по каким то причинам её нет в Интернете.Вам удалось написать алгоритм розыгрыша?
дружище - это как раз то что я и писал и все еще пишу)))
просто я не стал расписывать все правила ибо для решения задачи они были не нужны
у этой игры куча названий up$down, твой одесский покер, а у нас ее назыывают шпокер)

зы. когда допишу - скину ссылку)
зыы. можно ли будет вставить в хелп Ваше описание (лень писать свое)?
Ratings: 0 negative/0 positive

Re: нужен алгоритм
ale9551

Сообщений: 4
Дата: 09.09.11 06:48:22ОтветитьЦитировать
Здравствуйте!
Конечно можно вставить в Help моё описание.
А когда примерно игра будет готова?
Буду с нетерпением ждать ссылку.
Ratings: 0 negative/0 positive

Re: нужен алгоритм
wolf3d

Сообщений: 53
Дата: 09.09.11 16:09:18ОтветитьЦитировать
ale9551
Здравствуйте!
А когда примерно игра будет готова?
Буду с нетерпением ждать ссылку.
ну когда выйдет хзхз
я ж не Близзард или Акколате)
пишу когда настроение есть
было бы это за деньги (это не намек) - давно уже отписал бы
Ratings: 0 negative/0 positive

Re: нужен алгоритм
ale9551

Сообщений: 4
Дата: 25.03.12 08:02:43ОтветитьЦитировать
Приветствую Вас wolf3d. На сайте www.kpdev.ru готова он-лайн версия игры Одесский покер.Приглашаю потестить.Сегодня в 18-00 мск будем играть.Присоединяйтесь.
Ratings: 0 negative/0 positive

Re: нужен алгоритм
wolf3d

Сообщений: 53
Дата: 12.04.12 14:52:11ОтветитьЦитировать
ale9551
Приветствую Вас wolf3d. На сайте www.kpdev.ru готова он-лайн версия игры Одесский покер.Приглашаю потестить.Сегодня в 18-00 мск будем играть.Присоединяйтесь.
к сожалению только сегодня прочел)
спс за ссылку
Ratings: 0 negative/0 positive

Re: нужен алгоритм
of63
Автор

Сообщений: 13869
Откуда: Н.Новгород
Дата: 13.05.12 20:03:20ОтветитьЦитировать
черви?
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 20 and Guests: 20


© 2000-2019 Fox Club 
Яндекс.Метрика