Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
14-1103872857
Ученик
2004-12-24 10:20
2005.01.16
Компоненты для Delphi 8, 2005


14-1104264273
pika
2004-12-28 23:04
2005.01.16
Ох уж этот .Net


10-1080826752
serg128
2004-04-01 17:39
2005.01.16
Как в ClientDataSet заблокировать запись?


14-1103837749
Vasya.ru
2004-12-24 00:35
2005.01.16
ЗАО "Совасатом"


8-1097251674
Delphi5.01
2004-10-08 20:07
2005.01.16
Resample Image: Bicubic, Bicubic Smoother, Bicubic Sharper, ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский