|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.05.2012, 14:54 | #21 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
вот если К>=N/2+1 то будет выигрывать по любому первый игрок, это и так понятно. А вот если, правда я могу ошибаться, К>N/2, выигрывает первый игрок, а если К=N/2 и если брать клетки ВСЕ N не пропуская не одной, то выиграет 2й игрок, а если брать не подряд, т.е. пропуская то выиграет 1й игрок... Но я не уверенна, не все варианты перебирала, просто сижу играю, и как то так получается...Может и не права я...=(
|
03.05.2012, 15:05 | #22 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Если комп ходит 2, то давайте повторять ходы 1, НО при попадании в середину запускать алгоритм который ищет и просчитывает все возможные ходы выбирая лучший (ну например n = 9 k = 2
Код:
Код:
Код:
Последний раз редактировалось Poma][a; 03.05.2012 в 15:09. |
03.05.2012, 15:26 | #23 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
не очень понятно...
Последний раз редактировалось Олеся Ю; 03.05.2012 в 15:34. |
03.05.2012, 15:42 | #24 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Код:
тоесть n = 9, k = 2 поехали... Код:
Код:
|
03.05.2012, 16:19 | #25 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
блин, ну мне в программе все 40 клеток перебирать что-ли со всеми возможными ходами=((
|
03.05.2012, 16:29 | #26 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
обобщение стратегии Poma][a
0. для простоты анализа условимся что каждый из противников идет со своего края линии. Любой другой можно свести к данному варианту путем перестановки блоков. 1. наличие попарно симметричных блоков длин (достигается симметричной игрой). 2. наличие центрального блока несимметричного длины (единственного!) (опять симметричная игра). теперь все симметричные блоки дают преимущество второму игроку (опять симметричная игра) забудем о них. 3. несимметричный блок k..2k-1 выигрывает игрок делающий ход(первый) 2k..3k-2 выигрывает опять же он (при правильной игре! захват центра и два блока <k) 3k-1 =k+(2k-1) и только тут гарантия выигрыша противника. поскольку 3k опять выигрывает первый (захват центра и ДВА блока длины k) для следующего (3k-1) +(2k-1) =k +(2k-1)+(2k-1) и т.д. т.о. надо стремиться к длине центрального блока k+m(2k-1) соблюдая симметричность (п.1..2) и немного отступая от нее ( блоки длин k и k+x, где x<k сами по себе равносильны но по разному влияют на длину центрального!)
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 03.05.2012 в 16:34. |
03.05.2012, 16:59 | #27 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
вот я нашла кое-что не совсем конечно моё задание, здесь проще, то что зачеркивают подряд и К = либо1,2 или3....
но чем то похоже.В делфи. |
04.05.2012, 12:20 | #28 | ||
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Извиняюсь - ответ писал понемногу в течение двух дней..
Rin, привет ) Да, именно что игра кажется похожей на известные. Это и меня подставило ). Но похоже, что игра оригинальная. Респект ее автору! Мне нравится, что ее граф сильно ветвится. Цитата:
Например, возьмем шашки (а можно и шахматы, разницы нет). Согласно высказыванию выше, один игрок (скорее всего, первый) имеет выигрышную стратегию в самом начале игры. Но только найти ее невозможно (на данном уровне развития выч. техники). В эндшпиле ее можно указать. Но это не значит, что мы вышли на выигрышную позицию. Это значит, что мы вышли на позицию, с которой мы МОЖЕМ ПРОСЧИТАТЬ выигрыш. Таким образом, я бы определил два типа стратегий. Первый тип - стратегии, сводящиеся к простому правилу (типа всегда ходить так, чтоб сумма чего-то была такая-то). Пример - спички. А второй, соответственно - не сводящиеся, то есть которые требуют четкого указания последовательности ходов. Пример - шашки. Я понимаю, что это деление весьма условное. То, что мы не можем указать правило, не значит, что правила нет. Может, чтобы выиграть в шашки, первому игроку следует просто ходить с сохранением какой-нить "ультрапипертриплексной сепулькерии" - да и все тебе тут. Но пока мы не открыли оную сепулькерию, нам может быть полезно классифицировать хотя бы так. Цитата:
Это мне нравится ). Так и надо. А вот это - не очень.. Не искать надо, а думать. Гугл в этом не поможет. Короче, как и обещал, "набросал" (по твоему выражению)) я прогу.. Чисто и честно учесть все варианты я почему-то не смог (запутался в логике), поэтому придумал некую оценочную функцию, на которую и ориентируюсь. В результате прога играет, вроде, неплохо, но гарантировать 100% уверенную победу (речь, конечно, о случае, когда выигрышная стратегия для компа ЕСТЬ) я все же не могу. Выкладываю код, пояснения могу дать любые, но не прямо сейчас.. Код:
Прога работает довольно быстро при длине поля не более 20-25 клеток. Дальше начинаются тормоза.. Возможно, их можно убрать более правильным алгоритмом. Другой путь - урезать глубину просчета в начале (дальше время падает), но тогда есть опасность упустить главное.. Короче, это не окончательное решение, и есть над чем подумать. Я подумаю, если время позволит.
Предпочитаю на "ты".
|
||
04.05.2012, 13:56 | #29 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
думаю, что надо рандомайзить ходы компьютера (при равных оценочных значениях), иначе скучновато играть.
но так - весьма и весьма неплохо!! (хотя стратегия не является идеальной, к сожалению: для вашего примера доски ходы 5, 11, 20, 23 приводят к победе человека) |
04.05.2012, 15:06 | #30 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
у меня ссылается на ошибку:
xr:= Low(LongInt); |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование простых игр в Delphi | lux16 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 0 | 08.07.2011 23:59 |
Программирование или web-программирование? | Дмитрий Батогов | Помощь студентам | 3 | 23.06.2011 14:14 |
XNA программирование игр на C# | sergeybr | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 30.06.2010 13:52 |
CD к книге: Андре Ламот "Программирование игр для Windows. Советы профессионала, 2-е издание" | Pirotexnik | Общие вопросы C/C++ | 2 | 03.06.2010 22:53 |
с чего начинать программирование игр | Gunet | Свободное общение | 15 | 23.07.2009 11:22 |