![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
![]()
Вот есть две точки. А и Б. Как по квадратикам рассчитать траекторию от одного пункта к другому? Думал может сделать на js типо линейки и протянуть от одного пункта к другому и выделить те квадратики над которыми прошла линия. За самую оптимальную идею дам 200р
![]() Вот два примера что я хочу http://s1.my-app.co.cc/1.jpg http://s1.my-app.co.cc/2.jpg |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 20.05.2009
Сообщений: 506
|
![]()
У вас координаты точек на сетке есть ?
Рассчитать траекторию - это выделить квадратики между точками ? |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Есть стандартные алгоритмы поиска пути. Не судьба ими воспользоваться?
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
если препятствий нет, то все слишком просто, чё там вобще думать )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
![]()
Да. Сетка поделена на координаты. Вот:
http://s1.my-app.co.cc/1.jpg А и Б - это игроки. Мне нужно просто рассчитать координаты по которым будет лететь пуля. И потом сделать проверку на препятствия. И если на данных координатах нету препятствий нанести урон игроку. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Могу рассказать как это делается с примерами кодов на JS и PHP, но за это Вы пожертвуете ваши 200р форуму. Идёт?
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
![]()
Конечно. Для такого форума 200р не жалко, и я обещал тому кто поможет 200р)
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Ну значит поехали...
Применение алгоритма поиска для расчёта выстрела в браузерной игре Дано: Объект А и Б находятся на игровом поле. В данном случае прямоугольная сетка. Объект А делает выстрел в объект Б. Рисунок 1. Требуется: определить дальность, т.е. возможность достижения цели, учитывая препятствия на пути. Решение: - Каждой ячейке задаём отдельный номер, как показано на рисунке 2. Почему каждой ячейке отдельный номер, а не две координаты? Потому что передавать меньше данных и перебирать ячейки легче. - Создаём массив связей ячеек друг с другом. По принципу: PHP код:
- Дополняем массив связи ячеек полем для расчёта пути. В нём мы отражаем какие объекты находятся на карте и в нём производим расчёт пути. Для пустых ячеек мы ставим номер 101, для препятствий - 102, для атакующего игрока (игрок А) - 100, для цели - 0 (игрок Б). Должен получиться массив типа такого: PHP код:
Это сделать достаточно просто, т.к. все данные у нас есть. Цель определяет игрок. Числа 100, 101, 102 - условные можете использовать любые больше числа ячеек. - Далее применяем над полученным массивом магическую рекурсивную функцию: PHP код:
Почему ищем от цели к началу? Дабы избежать глубокой рекурсии если цель недосягаема. Какой будет результат на нашем примере? Функция изменит параметр массива path на значения как на рисунке 4 и выдаст в качестве результата 6 (7-1 шагов). Ячейки функция перебирает в данном случае по часовой стрелке, поэтому остались необработанные ячейки с меткой 101. Замечания: - Данный алгоритм универсален. Его нужно без особых изменений применять и на сервере (php) и на клиенте (js) для расчёта возможности достижения цели. - Хоть и в примере не было препятствий, он легко обрабатывает их находя путь в обход. Для этого приведённый алгоритм менять не надо. - Как рассчитать, что препятствие загораживает нам путь? Очень легко... Сначала мы производим расчёт шагов с препятствиями по данному алгоритму. Затем производим расчёт шагов без препятствий по данному алгоритму. Сравниваем результаты - если они различаются, то препятствие преграждает нам путь. - Скорость алгоритма феноменальная (проверенно). Вроде бы всё. Если есть вопросы, то задавайте. |
![]() |
![]() |
![]() |
#9 | ||
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
![]()
Виталий Желтяков
Мне нужно - получить координаты квадратиков по которым будет лететь пуля от А до Б. Цитата:
Не понял откуда вы берете значения к примеру : Цитата:
P.S. Дайте ссылку на тему с помощью для форума. Не могу найти. |
||
![]() |
![]() |
![]() |
#10 | ||||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]() Цитата:
Цитата:
Цитата:
Цитата:
|
||||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
бд + расчет в % | Dev1 | БД в Delphi | 2 | 12.05.2010 13:19 |
Алгоритм прохождения лабиринта | PAVEL315 | Общие вопросы Delphi | 13 | 02.01.2010 01:22 |
Расчет из 3 листов | maksvas | Microsoft Office Excel | 6 | 18.11.2009 10:11 |
Сложный расчет З/П | VictorM | Microsoft Office Excel | 7 | 08.11.2009 16:51 |
Кредит, расчет. | valerij | Microsoft Office Excel | 6 | 14.04.2009 23:15 |