Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pac-man - демо вариант. Нужен алгоритм. Пакман - но не догонять, а убегать 
:(
    Опции темы
_Y_
Дата 30.12.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Pac-man - классическая игра. Кто не помнит в ней некий смайлик бегает по лабиринту и ест некие плюшки. При этом уворачивается от двух-четырек привидений, тупо его преследующих. Задача - слопать все плюшки. Простенько и со вкусом.

Смайликом управляет игрок. Приведения используют алгоритм A* (как правило) для того, чтобы направляться в сторону смайлика. Впрочем, могут быть и варианты проще.

Мне же нужен алгоритм не самой игры, а демо к ней. Т.е. вариант, в котором смайлик тоже управляется компьютером. Т.е. смайлик направляется по лабиринту в сторону не съеденных еще плюшек, но одновременно и убегает от привидений.

Не подскажет ли кто-нибудь алгоритм хорошо расписанный? Честно говоря не хочется велосипед городить. Если гуглю - все время вылезают описания алгоритма самой игры, т.е. движения привидений.

Спасибо.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Bitter
Дата 30.12.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 4
Всего: 27



а почему нельзя использовать алгоритм движения приведений применимо к смайлику? Пусть он случайно выбирает точку и движется к ней, съедая всё на своём пути (точка будет выступать в роли смайлика, на которого охотится приведение), а приведения пусть считает за стенки лабиринта.
PM MAIL ICQ Skype   Вверх
_Y_
Дата 30.12.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Bitter, пожалуй приведения его сразу слопают. 

Здесь скорее надо выбирать некое среднее между привлекательностью плюшек и страхом привидений. При этом и страх и привлекательность, видимо, должны слабеть с расстоянием. Но это тоже туповато. И, главное, требует многих экспериментов с параметрами.

Вот я и думаю - надо ли самому изобретать то, что другие уже раз восемьсот изобрели?


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Фантом
Дата 30.12.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Так а что мешает сделать тот же A*, только снабдить приведения очень большой стоимостью? Как вариант (чтобы смайлик не пытался пробегать под носом у приведений), места, находящиеся на некотором небольшом расстоянии от приведений (на графе лабиринта, конечно), также снабжаются большой стоимостью, растущей по мере приближения к приведению.
PM   Вверх
_Y_
Дата 30.12.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Фантом, хорошо. Пусть будет так. Хотя это опять ведет к экспериментам с параметрами. А как задать привлекательность множества плюшек?



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Фантом
Дата 30.12.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(_Y_ @  30.12.2010,  22:11 Найти цитируемый пост)
А как задать привлекательность множества плюшек?

Так ведь искать-то надо маршрут к чему-то. Вот и ищите маршруты ко всем плюшкам, потом выбирайте самый дешевый.
PM   Вверх
_Y_
Дата 31.12.2010, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Фантом @ 30.12.2010,  22:31)
ищите маршруты ко всем плюшкам, потом выбирайте самый дешевый.

Наверное это будет иногда приводить к маятниковым движениям смайлика. Впрочем - с этого наверное можно начинать. А там видно будет smile

Потом отпишу что получилось. Единственно, это "потом" может сильно затянуться. Проект этот у меня почти последний в списке срочности испольнения.

Спасибо!


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Фантом
Дата 31.12.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(_Y_ @  31.12.2010,  20:24 Найти цитируемый пост)

Наверное это будет иногда приводить к маятниковым движениям смайлика. Впрочем - с этого наверное можно начинать. А там видно будет 

Можно первоначально выбранной плюшке дополнительно приписать отрицательную стоимость, тогда при прочих равных смайлик будет двигаться к ней. Хотя, в принципе, при начальном продвижении к ней стоимость пути и так будет уменьшаться, если на дороге не попадутся привидения.
PM   Вверх
миг
Дата 10.1.2011, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 15.9.2008

Репутация: нет
Всего: 1



может смайлику сначало стоит. есть точки в одном углу игрового поля.. тогда все приведения будут пытаться поймать смайлик в том углу.. т.е. приведения сместятся как можно ближе друг к другу и не будут рассредоточены по всему игровому полю.. потом смайлик будет бежать в другой угол. а все приведения будут идти паровозиком за смайликом..
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
_Y_
Дата 11.1.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



миг, вот в том и дело: как избежать патовых вариантов? Ваше решение подразумевает некий интеллект у смайлика. Как бы его описать простым алгоритмом, не городя нейронные сети на пол Атлантического океана  smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
ksnk
Дата 11.1.2011, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



_Y_, а почему бы не просчитывать "ходы" привидений на несколько ходов? Разбить все возможные варианты действий пакмена на элементарные предвижения - стоять-вверх-вниз-вбок на какой-то квант времени. Алгоритм движения привидений достаточно однообразен, так что особого разветвления дерева выбора не должно быть, глубина перебора должна быть достаточно приличной. 
В качестве функции оценки можно использовать количество заработанных очков. При достаточной глубине перебора будет в меру эффективно.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
миг
Дата 11.1.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 15.9.2008

Репутация: нет
Всего: 1



Допустим смайлик ест точки.. и  вычисляет расстояние до всех приведений.. как только расстояние сократится до опасного, то смайлик бежит прочь с того места пытаясь увеличить это расстояние. Опасное расстояние допустим 3-5 шага до смайлика. если смайла пытаются окружить приведения, то смайл должен бежать до ближайшего свободного перекрестка в лабиринте. а потом думать куда бежать дальше, чтобы удалиться от приведений.. Если не придумал куда бежать дальше пускай бежит до следующего свободного перекрестка. Помоему весь алгоритм заключается в том, что призраки пытаются сократить расстояние до смайла.. а смайл пытается увеличить это расстояние.. расстояние от призрака до смайла считаеться не по прямой..

Или еще вариант вокруг смайла  на расстоянии в несколько шагов образуется некое поле. как только призрак входит в это поле смайл пытается двигаться в противоположную сторону от призрака, так чтобы призрак оказался за этим полем... если второй призрак зашел в поле смайла, то смайл опять меняет направление чтобы как минимум увеличить расстояние до одного призрака и не сократить расстояние до другого.. если условие с двумя призраками выполнить не получиться, то опять бежим до свободного перекрестка.

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

Получается, что поедание плюшек это второстепенная задача.. если просто грамотно уворачиваться от призраков, то рано или поздно смайл гонимый призраками обойдет весь лабиринт и съест все плюшки))

Это сообщение отредактировал(а) миг - 11.1.2011, 23:00
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0829 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.