Форум: "Игры";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизDelphiX Найти похожие ветки
← →
VasyaPupkin (2004-09-28 12:51) [0]Как внести изменение в созданную карту.
Типа редактора карт.
← →
cyborg © (2004-09-28 13:00) [1]А чего ты уже сделал в этом редакторе?
← →
VasyaPupkin (2004-09-28 13:03) [2]Сделал карту =)при помощи массива
как поменять 1 елемент етого массива
← →
cyborg © (2004-09-28 13:14) [3]Изменяй массив, разве не догадался?
← →
VasyaPupkin (2004-09-28 13:18) [4]я то догадался только у меня све виснет
я думал что можно по другому
← →
cyborg © (2004-09-28 13:21) [5]
> [4] VasyaPupkin (28.09.04 13:18)
> я то догадался только у меня све виснет
> я думал что можно по другому
Как ты думаешь, причина сама исчезнет или нужно покопаться в том, чего ты там понаписал? Открывай и смотри! И отладку включи.
← →
Jus (2004-09-28 13:45) [6]
> VasyaPupkin (28.09.04 13:18) [4]
> я то догадался только у меня све виснет
> я думал что можно по другому
Походу я так понял что при редактировании карты ты к примеру при нажатии на пробел добавляеш в массив "объект" и на карту редактирования тоже, при этом объект у тебя на карте в одном месте создаётся несколько раз.
Примерноvar
Сделай чтоб программа проверяла сначала если в
MyObject:array[0..100] of TMyObject; fMyObject: integer;массиве[x,y]=""
, то догда добавляеш
MyObject[fMyOjcect]:=TObject.Create;
Если в
fMyObject:=fMyObject+1;массиве[x,y]>""
then стираетсямассив[x,y]=""
и удаляется объект ... который находится там иfMyObject:=fMyObject-1;
и тогда в массив добавляется новый "обект" и на карте тоже;
Описал буквально:)
← →
Jus (2004-09-29 21:54) [7]Забыл
For i:=0 to fMyObject do MyObject[fMyOjcect].Free;
> VasyaPupkin (28.09.04 13:18) [4]
Кстати, гдето я тебя раньше видел:) Ты случайно не в Тюменских краях обитаеш? чё то имя знакомое.
← →
Servelat © (2004-09-29 22:34) [8]2 Jus [6]
ты умеешь читать мысли? Было дано: использован массив, есть какая-то карта, все виснет. Как ты догадался в чем причина, целую теорию подвел:
> при нажатии на пробел добавляеш в массив "объект" и на карту
> редактирования тоже, при этом объект у тебя на карте в одном
> месте создаётся несколько раз.
Мне просто интересно, что такое "карта редактирования" (может я дурак просто :) , но о таком страшном слове раньше не слышал). Как ты сделал вывод, что объект создается несколько раз, и что там вообще объекты использованы? Кстати, по идее, виснуть не должно в описанном тобой случае, там просто объекты создаются, а указатели на них теряются, может быть утечка памяти, но при этом программа нормально работать дожна и не виснуть, по крайней мере до того, как попытаешься её закрыть.
Кстати, хотелось бы видеть более удобоваримые посты, с запятыми (у тебя штуки 4 пропущено), мягкими знаками (добавляешЬ), и не понятно еще по чему "объект" в кавычках. Но это так, к слову :), я и сам не всегда пишу разборчиво ;) .
> массиве[x,y]=""
чего-то странно, вроде у тебя дальше написано array[0..100] of TMyObject;. А тут ты его с пустой строкой сравниваешь. Видимо ты имел в виду =nil, но отгадывать, что имел в виду ты (и автор вопроса тоже, кстати) - значит тратить лишнее время.
← →
VasyaPupkin (2004-09-29 22:41) [9]Спасибо,но я уже сделал редактор карт.
Помогите сделать алгоритм поиска пути.
← →
Jus (2004-09-29 22:52) [10]
> 2 Jus [6]
> ты умеешь читать мысли? Было дано: использован массив, есть
> какая-то карта, все виснет. Как ты догадался в чем причина,
> целую теорию подвел: ...
Ну... я исходя из примера своего редактора, с объектами, ... ну уже не важно, VasyaPupkin теперь просит в другом помочь:)
← →
Servelat © (2004-09-29 23:11) [11]2 [9] VasyaPupkin
Тебе быстро или точно :) ?
Шучу. На самом деле статей дофига, на DelphiGFX тоже что-то было по этой теме. Rambler, Google, Jandex тебе в руки и вперед. Так могу сказать, что по мне лучше всего волновой алгоритм, его легче всего понять. Алгоритм A* является оптимизацией, расширением этого алгоритма, работает вроде быстрее, но из-за оптимизаций понавешанных, сходу в нем разобраться весьма не просто. Могу заделиться примерчиком волнового алгоритма, было у меня как-то такое задание по информатике.
← →
VasyaPupkin (2004-09-30 12:27) [12]Я кучу примеров нашел, но как их реализовать не понимаю
И мне надо чтоб не в двухмерном массиве было, а на всех координатах(т.е. препяпствие стояло не только на элементе массива)
← →
МЯУ (2004-09-30 13:28) [13]VasyaPupkin (30.09.04 12:27) [12]
а нафига тогда массив нужен, если "препятствие не только на элементе массива"? и, вообще, как это?
← →
VasyaPupkin (2004-09-30 13:37) [14]массив у меня в редакторе карт.
карта по массиву создается а потом с помошю массива загружается
а спрайт может в любую координату встать
> вообще, как это?
как это?....я не знаю даже как обяснить.
← →
Servelat © (2004-09-30 16:08) [15]
> массив у меня в редакторе карт.
> карта по массиву создается а потом с помошю массива загружается
> а спрайт может в любую координату встать
Заводишь еще один массив [0..x,0..y] of boolean, туда заносишь по своим хитрым вычислениям, занята клетка или нет. Если в ней стоит монстр, например, то занята, или если по ней ходить нельзя - то тоже занята, иначе - свободна. А поиск пути проворачиваешь по этому массиву.
← →
Jus (2004-09-30 21:44) [16]
>
> Servelat © (30.09.04 16:08) [15]
Хитрые вычисления:)
Я наверное с этим скоро тоже столкнусь!) А как делать? Я понял что это как крот, идёт, столкнулся, увидел припятствие, развернулся, идёт дальше, о!!! вижу на вытянутую руку лестницу, куда идти?!, попробую спросить у Randomа, ага!, вниз, ой, вниз лестница не идёт, тогда вверх лезим!, и т.д.:)...?
← →
МЯУ (2004-09-30 21:44) [17]насколько я понял, объекты привязаны к ячейкам массива, но обладают также смещением относительно сетки. Тады, наверно, надо рассчитывать через какие-то промежутки времени, к какой клетке относится движущийся объект, и делать её непроходимой, а ту, которая была занята до этого - освобождать.
ещё есть определенная сложность, если по карте одновременно носится большое кол-во народу, как в случае RTS. Там попотеть придётся над алгоритмом, чтобы твои уродцы на пятки не наступали друг другу.
← →
МЯУ (2004-09-30 21:47) [18]Jus (30.09.04 21:44) [16]
поиск пути по рандому? это ты мощно задвинул! :))))
надо реализовать где-нибудь :)
← →
Jus (2004-09-30 21:56) [19]А вот диалог между Рандумом и кротом!
-Random, куда идти?
-ну... вверх!
-там тупик! теперь куда?
-вверх!
-я туда уже ходил, там тупик!!!
-Я рандум, и я говорю иди вверх!
-там, ...тупик!
-Тогда влево иди!
-там стена!
-тогда, вверх!
-тупик!
-мы собрали совет и решили, ... иди вниз!:)
← →
Omar2002 (2004-10-01 16:03) [20]Этот ваш рендомайзный алгоритм ничего не даст, т.к. все функции случайных чисел дают вам небольшой разброс -вернее в среднем число всех выдаваемых значений остается постоянным. Я такую штуку года два назад пробовал - пехотинец фактически топтался на одном месте. Описывал всякие абракадабры вокруг начального положения. Другое дело, если задавать направление движения только, когда этот ваш "Крот" во что-нить воткнется, тогда это получится обычный пак мен. Но в стратегиях такое исполнять я думаю не надо :)
Сам алгоритм поиска пути по-началу не понятен в реализации, но можно использовать уже готовый модуль, который прилагается к статье про А* .
статья тут: http://delphigfx.mastak.ru/doc/path/path.htm
файл тут: http://delphigfx.mastak.ru/samples/samp2.rar
Там По-моему второй юнит программы как раз саму реализацию и содержит. Во всяком случае я именно так и начинал. Если этого покажется мало и захочется усовершенствовать этот алгоритм до красивого состояния, то можно еще вот эту статейку почитать
http://dev.dtf.ru/articles/read.php?id=51
(не забудьте в конце страници нажать "Следующая страница), а то я в первый раз только треть статьи прочел :) )
Если уж волнует вопрос безграничного пространства(ну Очень большие карты), то решение есть в конце статьи
http://dev.dtf.ru/articles/read.php?id=50&page=1
Правда там нету примера, за то есть ссылка на первоисточник :)
Что касается положения спрайта в любой точке карты - если хочется искать маршрут быстро - придется в любом случае загонять всю карту и юнитов в массив, иначе придется те сложный алгоритм свой придумывать, но не факт, что он у тя получится эффективнее и быстрее.
Можно так же для просчета маршрута использовать более мелкий массив(ячейки мелкие - раза в 2-4 меньше, чем ячейки в редакторе карт)
← →
cyborg © (2004-10-01 16:10) [21]
> [20] Omar2002 (01.10.04 16:03)
> Этот ваш рендомайзный алгоритм ничего не даст
Почему же не даст? У меня танчики как раз только на нём и ездят. Вполне прилично ездят.
← →
VasyaPupkin (2004-10-03 18:26) [22]to [20]
Spasibo za stat"i.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.04 c