Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 20:32   #1
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию Вопрос с классами.

У меня в игре есть классы TWeapon и TAmmo, причем TAmmo находится в TWeapon.
Код:
TWeapon=class
BangAnim: array [0.20] of TEffects;
..............
Ammo: array [0..20] of TAmmo;
...............
end;
Также есть процедура TAmmo.Processing в которой идет обработка каждую милисекунду:

Вопрос: можно ли как-либо использовать переменные TWeapon из TAmmo.Processing. То есть использовать переменные которые расположены выше в иерархии. Я же например могу использовать переменные TAmmo из процедур TWeapon. (мне нужно наоборот).
Вадим Буренков вне форума Ответить с цитированием
Старый 12.07.2009, 20:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

добавь в Tammo свойство родителя...и используй его(так же у компонентов)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.07.2009, 20:40   #3
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Ну да, я знаю. Только проблема в том что так получится намного сложнее. Что вообще нереально получить переменные которые расположены выше в иерархии?
Вадим Буренков вне форума Ответить с цитированием
Старый 12.07.2009, 21:04   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

либо так...либо в процедуре передавать как параметр...иначе никак
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.07.2009, 01:28   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. При создании TAmmo указывать родителя (т.е. TWeapon)
2. В разделе либо Public либо Private класса TWeapon описать нужные переменные для использования в TAmmo. Можно и в Private, они будут видны т.к. в одном модуле описаны.

p.s. я раскрыл, на счет иерархии - это ведь вроде не то, помойму это например TObject - TControl - TWinControl и т.д. т.е. иерархия создается методом наследования класса классом, у вас же просто данные описаны. Ну это так, лирическое отступление.
BOBAH13 вне форума Ответить с цитированием
Старый 13.07.2009, 08:24   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Вадим Буренков Посмотреть сообщение
Ну да, я знаю. Только проблема в том что так получится намного сложнее. Что вообще нереально получить переменные которые расположены выше в иерархии?
ООП преследует прямо противоположные цели . Вы пытаетесь перешагнуть через инкапсуляцию. К вышеперечисленному можно добавить еще один вариант (возможно не самый лучший) - изменить алгоритмы работы TAmmo и TWeapon.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.07.2009, 08:55   #7
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Спасибо но я уже сделал через передавание нужных переменных как параметр (что это я сразу не додумался ).
Цитата:
иерархия создается методом наследования класса классом, у вас же просто данные описаны.
Я знаю что иерархия получается наследованием, просто не знал как по другому выразится.
Вадим Буренков вне форума Ответить с цитированием
Старый 13.07.2009, 09:27   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Зачем изобретать что- то, когда есть Tcomponent ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 13.07.2009, 10:08   #9
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Что за TComponent? (просто я в танке )
Вадим Буренков вне форума Ответить с цитированием
Старый 13.07.2009, 10:30   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну это, в встроенном хелпе по Делфи пишешь TComponent...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
Помогите с классами в делфи((( PRIVIDENIE18 Помощь студентам 8 14.05.2009 09:07
Как пользоваться классами на С++ madmax08 Общие вопросы .NET 4 15.07.2008 23:59