|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.04.2012, 19:45 | #1 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
Программирование игр и головоломок
[FONT="Arial Black"][FONT="Times New Roman"]Разработать программную модель следующей логической игры двух игроков (пользователь-компьютер), реализовав выигрышную стратегию для компьютера: Вводится целое число K>=1. Бумажная полоса разбита на N клеток (K <= N <= 40).Играют двое, по очереди выбирая и зачеркивая K пустых смежных клетки. Выигрывает сделавший последний ход. Ходы первого вводятся с клавиатуры и задаются индекcoм ячейки L (1<=L<=N-K+1).При этом вычеркиваются клетки с индексами от L до L+K-1.После каждого хода выводится текущая позиция в виде
__________________ 1 2 3 ... n __________________ __________________ * * |
28.04.2012, 06:08 | #2 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Насколько я понимаю речь идет о варианте игры в ним. У нас этот вариант известен как игра в спички. Но только условие поставлено не совсем правильно.. Из условия следует, что на каждом шагу зачеркивается ровно K клеток. Но тогда это никакая не игра, все ясно заранее. Наверное, имелось в виду, что зачеркивается не более чем К, или же что К каждый раз разное. Но в последнем случае надо ограничить К сверху, поскольку иначе первый берет все и выигрывает )).
Короче, Олеся, пожалуйста, уточни условие. А запрограммировать эту игру в текстовой моде не составляет ну абсолютно никакого труда (вместе с реализацией выигрышной стратегии), развлекухи всего на несколько минут..
Предпочитаю на "ты".
|
28.04.2012, 16:07 | #3 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
нет, просто берется вводится К, которое больше 1. И что игрок что компьютер каждый раз зачеркивает не больше не меньше а именно К клеток.
И выигрывает тот кто зачеркнул последние клетки К. если осталось по 1й в разных местах, а К=2 то их не считают, выиграл тот кто зачеркнул 2 последние. Если играть на листочке то выигрывает то игрок, то комп, в зависимости от кол-ва N клеток на полосе. Не знаю что за стратегия что должен выигрывать компьютер.=(( |
29.04.2012, 00:11 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
TinMan, не, это не Ним, это совсем другая игра..
K задаётся в начале игры (кем - сейчас не столь важно). заполняются свободные смежные (подряд) K ячеек, но в ЛЮБОМ месте ленты.. имхо, выигрышная стратегия должна быть, если свободных ячеек подряд меньше или равно 2*K - то располагать свои по центру. а если их больше - то располагать свои так, чтобы свободных смежных оставался кусок строго больше 3*K ... это я сейчас из головы пишу, возможно, что и ошибаюсь.. Олеся Ю, а каков порядок игры? Ну кто задаёт K, N и кто ходит первым - человек или компьютер? |
29.04.2012, 14:01 | #5 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
первым ходит ИГРОК. N и К задается просто при запуске в паскале например: введите N и введите К это не оговорено, я так думаю, задание я написала в точь как оно есть. Моете мне помочь, накидать эту программу?))
|
29.04.2012, 16:38 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
к сожалению, я сейчас не готов составить, закодировать и проверить выигрышную стратегию...
Вы можете почитать дидактический (для начальной школы, судя по всему) материал, что такое выигрышная стратегия и как она составляется. вот тут: http://www.prosv.ru/ebooks/inf34/INF...NF4metod06.htm http://www.prosv.ru/ebooks/inf34/INF...NF4metod07.htm Если же Вы готовы сформулировать правила этой самой выигрышной стратегии, то написать код уже будет просто! |
30.04.2012, 04:29 | #7 | ||
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Цитата:
Игра все же подпадает под разряд ним'ов - зачеркнутые клетки можно считать взятыми, ничего не передвигается. Но конкретный вид не похож ни на что, ранее мной виденное.. Должен признать, игра довольно интересная получается, особеннно если тщательно подобрать длины поля и хода. Я уже второй день думаю над решением (Олеся, спасибо)). Простой стратегии (как в спичках) тут явно нет. Поэтому я попытался переключиться на самообучающуюся схему. С первого взгляда казалось, она тут легко и органично встанет в пазы - ан, нет! Виной всему большое количество возможных ходов в каждый момент (то есть большое ветвление графа игры) в общем случае - пришлось от этой идеи отказаться.. Тогда я посмотрел в сторону традиционных методов с просмотром на несколько ходов вперед и вычислениеи оценочной функции стоимости хода. Но с последней вышел затык. Беда еще и в том, что я ни разу в нее не играл и поэтому не чувствую.. (( Короче, я так и не нашел пути, который мне бы понравился и грарантированно вел бы к ответу. В конце концов я решил типа сыграть сам с собой (и получил массу удовольствия)). Вывод такой - стратегия не совсем простая, но она есть. У кого именно она есть (первого или воторого) пока неясно (это должно зависеть от длин доски и хода), но я продолжу исследование.. Цитата:
Предпочитаю на "ты".
|
||
30.04.2012, 20:46 | #8 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
Спасибо большое за ответ. Я тоже предпочитаю на ты.=)
Я вот пока сижу рисую, пытаюсь разработать стратегию, но почему то у меня либо игрок выигрывает, либо комп, это в зависимости от кол-ва клеток. А мне считай надо чтоб комп выигрывал. Вот я пока не могу понять от чего это зависит(( |
01.05.2012, 09:06 | #9 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 17
|
Еще моя задача аналогична вот этой. Но я не совсем это вижу.
Есть две обезьяны и куча из L бананов. Обезьяны по очереди, начиная с первой, берут из кучи бананы, причем 1-ая обезьяна может при каждом очередном ходе взять из кучи либо a1, либо a2, либо ... aS бананов (а1 <a2 <...<aS), а 2-ая при каждом очередном ходе --либо b1, либо b2, либо ... bK бананов (b1 <b2 <...<bK ). Нумерация индексов при a и b не имеет никакого отношения к номерам ходов обезьян Выигрывает та обезьяна, которая на своем ходе не может взять банан(ы) (либо потому, что их не осталось, либо потому что бананов осталось меньше чем a1 (при ходе первой обезьяны) либо b1 (при ходе второй обезьяны)). Определить может ли выиграть первая обезьяна при наилучших ходах соперницы, которая также стремится выиграть. Все входные данные - натуральные числа. Решение задачи 4.1. Будем обозначать текущую ситуацию в игре парой (S,i), где S количество бананов, оставшихся в куче, перед текущим ходом i-ой обезьяны (i равно 1 или 2). Для того, чтобы (S,1) была выигрышной для игрока 1, среди возможных ситуаций после его хода (S-a1,2), ... ,(S-ak,2) должна быть хоть одна проигрышная для игрока 2 (в эту то ситуацию и надо будет перевести игру); если все ситуации выигрышные для игрока 2, то (S,1) - проигрышная для игрока 1 (как бы он не поступал, он все равно проиграет). Пусть ситуация после хода игрока 1 стала (S',2). Опять же делаем все допустимые ходы из этой позиции и смотрим является ли получившаяся ситуация (S",1) выигрышной, проигрышной или такой, которую мы еще не можем оценить. Если выполняется последняя альтернатива, то из (S",1) мы опять делаем все возможные ходы, анализируем, и т.д. Если мы в конце концов определили, для кого является выигрышной текущая позиция, то возвращаемся к предыдущему ходу и пытаемся определить, какая позиция для делающего ход и т. д., пока не вернемся к ситуации (L,1). Код:
________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 01.05.2012 в 23:08. |
01.05.2012, 09:28 | #10 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Олесь, пожалуйста оформляй код правильно, а то читать не возможно.... (кнопочка #)
и получается что последний цикл будет крутиться "вечно" ? (прошу прощения, если я ошибся, пишу с чужого ноута => паскаль не установить....) Последний раз редактировалось Poma][a; 01.05.2012 в 09:34. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование простых игр в 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 |