Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
187 - ?
30.10.2024
 Mefistofel
Galactic Showdown -…
21.10.2024
 KregHek
Новый IGDC
5.08.2024
 rimush
186 - Strategy!
15.07.2024
 VoroneTZ
WoL
3.07.2024
 Darthman
Привет выжившие
21.05.2024
 GeePee
185 - RPG
9.02.2024
 Vaskrol
В каком банке открыт…
24.01.2024
 Darthman
185 - ?
30.12.2023
 Mefistofel
TESTAMENT - Тактичес…
15.11.2023
 KregHek
Сейчас на сайте
Гостей: 63
На сайте нет зарегистрированных пользователей

Пользователей: 1,790
новичок: Durved
Обсуждение «лазаем в соседних объектах»
JohnJ
Avatar пользователя

Опубликовано 18.02.2008 05:45 (17 лет назад)    #
Допустим есть два массива:
enemy, our: array of TSoldier;
пусть TSoldier это класс, в котором важно свойство Coord: TPoint;
Хочу встроить функцию нахождения ближайшего врага в класс TSoldier в виде метода, например function TSoldier.GetEnemy:TPoint;
Как реализовать эту функцию?

Может ламерский вопрос, но каков я есть, таков и вопрос :)

Мои идеи:
Возможно эти массивы нужно запихать в объект типа TWorld и там вычислять данную функцию, но хотелось бы, чтобы каждый "солдат" мог для себя сам искать врага. Поэтому и решил спросить здесь, может подскажите как лучше осуществить мою задумку :).
Спасибо.

редакция от JohnJ, 18.02.2008 05:47

Anton Andreevitch
Avatar пользователя

Опубликовано 18.02.2008 05:46 (17 лет назад)    #
тупо перебрать все и выбрать наименьшее :)
JohnJ
Avatar пользователя

Опубликовано 18.02.2008 05:47 (17 лет назад)    #
дык а как отдельный объект будет знать о существовании остальных объектов из самого класса... не понимаю :)

просто хочется сделать класс поуниверсальнее, если я и напишу что-то вроде for i := 0 to High(enemy) do distance := dist(Coord, enemy[i].Coord); то назвав массив по-другому, класс уже не будет работать... да и сами enemy должны будут искать в массивве our, а не в своём...

// немного подумав:

можно, наверное, передавать адрес массива с объектами в функцию?
типа function TSoldier.GetEnemyCoord(penemy: TPointer): TPoint;
или это не лучший способ?

редакция от JohnJ, 18.02.2008 05:59

Anton Andreevitch
Avatar пользователя

Опубликовано 18.02.2008 06:00 (17 лет назад)    #
сделать глобальный Tlist, в него заносить уккзатели на классы, каждый клас в нем ищет кого нужно. Не ООП уже, но это игра, а не лабораторная работа в институт :)
JohnJ
Avatar пользователя

Опубликовано 18.02.2008 06:04 (17 лет назад)    #
спасибо, тоже думал так сделать (через TList), но потом решил позаморачиваться ещё с классами... просто потом проще использовать будет, если получится... если с классами не получится, то так и сделаю.

редакция от JohnJ, 18.02.2008 06:05

Anton Andreevitch
Avatar пользователя

Опубликовано 18.02.2008 06:10 (17 лет назад)    #
а еще в array of обычно кладут данные, а не структуру, просто потому, что можно по указателю на первый элемент потом по всем разом пройтись (типа картинка - куча байтов обрабатывается в цикле последовательно). зачем хранить классы в array не пойму :)
JohnJ
Avatar пользователя

Опубликовано 18.02.2008 06:48 (17 лет назад)    #
а как их сделать лучше? тем же списком? в массиве для простоты сделал... думал так попроще будет :)
Makar Borisowitch
Avatar пользователя

Опубликовано 18.02.2008 09:17 (17 лет назад)    #
Я обычно помещаю все возможные объекты в единое пространство - напрмер класс CLevel. И у каждого класса объекта есть статический указатель на CLevel, в котором он находится. Таким образом можно получить не только все объекты, но и самого себя "через одно место". (:
Работает отлично. (:
Adler
Avatar пользователя

Опубликовано 18.02.2008 17:12 (17 лет назад)    #
У меня проблема хуже. Есть класс, который рулит всем. В нём лежат(он их создает он их и мочит) движки типа: Bots,Bullets,Effects,Teams и Lines. Каждый из этих двигов рулит типичными ему объектами. Теперь надо придумать, куда засунуть оружие (которое будет не только валятся на карте, но и его будут таскать боты). Ещё будут бонусы, их тоже надо, куда-нибудь затолкать.

PS: Пока писал пост допёр, что лучше сделаю оружие бонусам и с привинченными данными, так будет правильнее.)))
JohnJ
Avatar пользователя

Опубликовано 18.02.2008 19:31 (17 лет назад)    #
Если я тебя правильно понял, то я решил эту проблему так:
у каждого бота есть свойство iWeapon, в котором хранится указатель на объект - оружие, которое у него в руках, а если nil - то нет оружия...
Хотя, наверное, лучше и у каждого оружия делать указатель на владельца (типа Parent). Тогда все оружия, которые не имеют владельца, рисовать на земле, остальных в руках у владельцев :).
Adler
Avatar пользователя

Опубликовано 18.02.2008 21:05 (17 лет назад)    #
Ну, это само собой. Я то думал, кто будет следить за обрисовкой оружия и его уничтожение, а то, что у бота свойство Weapon должно быть это и ежу понятно.
Перейти на форум:
Конкурсы
Открытые конкурсы:
Активных нет
Недавние конкурсы:
 186 - Strategy
 185 - RPG XII
 184 - Arcade II
 183 - Novel
 182 - RPG XI
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

26,158,614 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.