Помощь - Поиск - Пользователи - Календарь
Полная версия: atanks
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
compiler
Добрый день!
Решил вот написать игру по типу atomic tanks(я в неё ещё под ДОСом играл, а тут нашел под линух и убил много времени)).
Но возникли проблемы с определением куда будут стрелять танки, которые находятся под управлением компа.. Где бы можно было почитать про создание подобных "интиллектов"? а то смотреть чужие исходники очень тяжело, да и не нужен мне супер-пупер алгоритм...

для тех кто не знает игры
скрин: Нажмите для просмотра прикрепленного файла
скачать можно тут

заранее благодарен.
Michael_Rybak
а какие могут быть варианты? у каждого уровня сложности ставишь свою погрешность, и стреляешь по оптимальной траектории, смещенной на случайную величину с дисперсией, равной погрешности.
compiler
Цитата(Michael_Rybak @ 7.03.2008 21:08) *
а какие могут быть варианты? у каждого уровня сложности ставишь свою погрешность, и стреляешь по оптимальной траектории, смещенной на случайную величину с дисперсией, равной погрешности.
хм.. А как поступать когда вариантов выстрела с прямым попаданием несколько(напрямую и скажем с рикошетом от стенки)? И как получить это оптимальную траекторию?
update
и как выбрать по какому танку стрелять?

одни вопросы?)
Archon
Можно например сделать так:
Каждый выстрел задается несколькими значениями (направление, тип оружия, сила выстрела... точно не помню)
Можно сгенерировать набор выстрелов случайно, расчитать их и выбрать лучший по результату. Чтобы компьютер играл сильнее можно генерировать больше вариантов smile.gif.
compiler
Цитата(Archon @ 9.03.2008 12:08) *
Каждый выстрел задается несколькими значениями (направление, тип оружия, сила выстрела... точно не помню)
да, в оригинальной версии задаются эти три параметра..
Цитата(Archon @ 9.03.2008 12:08) *
Можно сгенерировать набор выстрелов случайно

Как? Если их бесчисленное множество.. можно делать упор на силу а можно на угол, можно стрелять напрямую а можно рикошетом от стенки...
Цитата(Archon @ 9.03.2008 12:08) *
, расчитать их и выбрать лучший по результату.
как выбрать лучшего среди бесконечности?)

да и еще надо выбрать по кому стрелят...
Archon
smile.gif

Ну... Я же не предлагаю рассматривать ВСЕ возможные случаи. Скажем придумали мы 100 совершенно случайных выстрелов. Какой шанс, что хоть один из них окажется удачным? Думаю, достаточно большой. Вот и находим лучший из этих 100. Если нет ни одного попадания, ничего страшного, ведь компьютер тоже промахиваться должен, просто выбираем тот, который ближе к врагу.

Можно развить идею. Например производим случайные выстрелы, пока один не попадет достаточно близко к какому-нибудь противнику. Затем проводим корректировку параметров, просто немного Увеличив/уменьшив параметры случайным образом.

Признаю, мой вариант не совсем серьезный, гораздо круче было бы выбирать цель, расчитывать все возможные оптимальные попадания после чего вносить погрешность... но как вариант smile.gif ...
compiler
Есть идея создавать танчики со своим "характером".. Тоесть один будет предпочитать стрелять параболой с максимальной силой, а другой с минимальной(при этом подбирая другой угол), а третий будет любить рикошеты... А выбирать для цели будем наверное самого слабого(как в реальной жизни))

пойду читать теорию(мат часть+ физ часть)
andriano
При наличии нескольких равнозначных вариантов выбор между ними осуществляется одним из следующих способов:
1. Датчиком случайных чисел.
2. Приоритетным выбором.
3. Берется первый попавшийся (не в смысле "произвольный", а именно в смысле "первый из найденных").
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.