|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.02.2011, 13:16 | #11 | |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
Виталий Желтяков
Почему: Цитата:
Вспоминаю работу в графическом редакторе. К примеру когда проводишь линию с одной точки в другую линия как то по пикселям рассчитывает по каким именно пикселям пройти ей нужно... Последний раз редактировалось Abuhamed; 04.02.2011 в 13:26. |
|
04.02.2011, 13:33 | #12 | ||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
Код:
Код:
Цитата:
Единственного и точного решения нет. Тут всё зависит от направления обхода, определённого в связях. В нашем примере обход организован по часовой стрелке, поэтому будет выбрана траектория прижимающиеся к нижнему краю поля. |
||
04.02.2011, 13:44 | #13 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Для уменьшения вариаций можно использовать ячейки с меньшим количеством возможных направлений ходов. Этого можно достигнуть двумя способами:
- сменить квадраты ячеек на шестиугольники или треугольники, - добавить значительное количество препятствий. Лучше объясните для чего Вам нужны ячейки по которым полетит пуля? Последний раз редактировалось Виталий Желтяков; 04.02.2011 в 13:52. Причина: Дополнение |
04.02.2011, 14:22 | #14 |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
Ячейки нужны что бы игрок видел каким путем летит пуля. И если что проверить на этих ячейках препятствии.
|
04.02.2011, 14:28 | #15 |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
И вариантов полета не так и много а точнее одна. Точки А и Б лежат на одной прямой. Исходя из всей кашы получим функцию. У нас есть 2 точки на координатной прямой, за ними можем найти саму функцию. Для этого решаем системой уравнений и отнимаем и получаем число k а потом получаем число b. Т.к. линейную функцию можно представить так : y=kx+b. И потом попросту подставляем значения х и получаем значения y. И у нас будут координаты квадратиков(точек,линии) на которой лежат две наши точки А и Б(игроки) и потом просто берем отрезок на между ними. Не зря я в школе учился
P.S. скинул 100р на счет форума. |
04.02.2011, 14:48 | #16 | |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Цитата:
- Описанный выше алгоритм реализуется также на JS (естественно, дублируясь на сервере). Менять в нём, кроме названий переменных, ничего не нужно. В результате мы получим некий массив ячеек с разметкой пути (рисунок 4) на клиенте. - Строим возможную траекторию движения пули, используя массив связей от начальной точки. Например: + до цели 7 шагов, + находим первую попавшуюся ячейку прилегающую к ячейке с path = 100 (у нас это игрок А) с номером 7-1 = 6 (например, ячейка 42) и выделяем её, + находим первую попавшуюся ячейку прилегающую к ячейке с path = 6 (ячейка 42) с номером 6-1 = 5 (например, ячейка 43) и выделяем её, + повторяем процедуру пока не достигнем цели. Что бы путь был близок к прямой, надо уменьшить число возможных переходов с ячейки (см. выше). Также можно выбрать подходящую последовательность перебора направлений связей. По поводу препятствий: - Вычислить, какое препятствие находиться по прямой можно, рассчитав расстояние от начала до препятствия, от препятствия до цели. Если сумма будет равна пути на прямую (без препятствий), то препятствие находится на прямой линии и мешает. Вычисляется всё это по тому же алгоритму. Это достаточно громоздко, поэтому лучше обозначить факт нахождения на выбранном пути препятствия (алгоритм описан в начале) и как-нибудь его выделить. Этот подход приемлем - пусть игроки немного думают. |
|
04.02.2011, 14:51 | #17 |
Форумчанин
Регистрация: 27.01.2010
Сообщений: 330
|
Виталий Желтяков
Я уже нашел математическое решение своей задачи. И продолжаю писать супер пупер бои для своей игрушки) |
04.02.2011, 14:57 | #18 | |
Старожил
Регистрация: 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 |