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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 18:46   #1
gromdel
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 68
По умолчанию Объекты создание, уничтожение, действие

Здравствуйте. Прошу у кого есть статью где более подробно описывается, как в Делфи создаются объекты, уничтожаются, и могут производить какие-то действия. Элементарно для примера: На поле создались 3 барана (2 муж. 1 женщ.), ходят кушают, 2 барана (М) встретились, один другого забодал, Встретился с бараном-женщиной - родился еще один барашка))
Просто у меня голова работает в определенном направлении, могу работать с тем, что забито в константы и переменные.

P.S. Даже не надо про создание и уничтожение, нужнее будет, как сделать, чтобы все объекты сами управлялись (производили действия)

Последний раз редактировалось gromdel; 24.04.2012 в 18:49.
gromdel вне форума Ответить с цитированием
Старый 24.04.2012, 19:17   #2
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Цитата:
Сообщение от gromdel Посмотреть сообщение
..., нужнее будет, как сделать, чтобы все объекты сами управлялись (производили действия)
Это как? Есть ли этому какое-нибудь объяснение?
Karabash вне форума Ответить с цитированием
Старый 24.04.2012, 19:28   #3
gromdel
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Karabash Посмотреть сообщение
Это как? Есть ли этому какое-нибудь объяснение?
Это даже из этой приведенной задачи. Существует 50 объектов барашков, как их контролировать и чтобы они сами производили действия. 35-й баран встретил 43-его. Подрались. 2-ой уперся в стену и повернулся, 15-й и 10-й родили барашка под номером 51. И уже барашков 51. И каждый сам что-то делает в зависимости от ситуации (уперся в стену, встретил противоположный пол, встретил однополого, встретил врага.)
НУ с барашками я утрирую, просто для примера. Чтобы действия были в запрограммированы (функции) и уже каждый объект выбирал сам для себя действие в зависимости от ситуации.
gromdel вне форума Ответить с цитированием
Старый 24.04.2012, 22:18   #4
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

1. Движение баранов организовать с помощью Random().
2. При встрече баранов написать процедуру-селектор действия (другой процедуры) взависимости от пола баранов.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 24.04.2012, 22:22   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

ОФФТОП: В Вашей проге будут утечки памяти потому что модель некорректна. Как это барашки только кушают? Они должны бесконечно раздуваться и рано или поздно вызовут переполнение стека. Бараний горох обязательно должен быть - это как две стороны одной медали (между прочим намек на правильное использование объектов)- рождение и смерть предусмотрены, а где антипод питанию?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 24.04.2012 в 22:38.
Utkin вне форума Ответить с цитированием
Старый 25.04.2012, 12:39   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

gromdel, а ты понятие "объект" в каком смысле используешь?

Барашков можно сделать отдельным объектом в смысле ООП, да. И каждый из них будет "сам производить действия". Вот только на практике это не очень удачная модель. Поскольку тезис "сам производит действие" предполагает, что за каждым барашком закреплён поток, который и выполняет (в фоне) "самостоятельные действия", независимо друг от друга.

Обычно имеет смысл ввести объект-контроллер, который будет заниматься управлением барашками. Пусть барашек - это объект. Тогда при создании барашка он должен зарегистрировать себя в объекте-контроллере. При удалении, соответственно - изъять. Контроллер может иметь метод "обновить состояние мира", в котором он в цикле проходит по всем барашкам (да и не барашкам тоже) и вызывает их метод "выполнить якобы самостоятельные действия".

При этом каждый объект в своей процедуре обновления состояния может запросить у контроллера, скажем, своих соседей. Если таковые есть - то опредеить их тип или свойства. И в зависимости от этого произвести какие-то действия (сожрать траву, родить барашка и т.п.).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 25.04.2012, 12:56   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Думаю, этот исходник будет хорошим примером.
Человек_Борща вне форума Ответить с цитированием
Старый 25.04.2012, 13:07   #8
gromdel
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 68
По умолчанию

GunSmoker спасибо за небольшое разъяснение, Человек_Борща спасибо за исходник.
Объект в любом его понимании. Ну допустим это картинка.
Тут все около ответа ходили, допустим массив баранов есть, как их прогнать, чтобы допустим за один ход, или за одно действия таймера, каждый баран проделал действие.?
На счет переполнения карты, естественно это думать надо что убить надо, или умрет сам.
gromdel вне форума Ответить с цитированием
Старый 25.04.2012, 13:14   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

я скинул ссылку на исходник, там и смотрите как работает пара тысяч баранов, как они работаю вместе, обходят друг друга, и ищут муравейник.
Человек_Борща вне форума Ответить с цитированием
Старый 25.04.2012, 13:20   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Тут все около ответа ходили, допустим массив баранов есть, как их прогнать, чтобы допустим за один ход, или за одно действия таймера, каждый баран проделал действие.?
Проходишь в цикле по массиву объектов. Тебе же сказали объект-контроллер внутри одного из методов в цикле активирует каждого барана по очереди. Если нужна имитация одновременных действий - действия баранов кешируются, затем следующий метод из кеша уже вносит действия - убивает баранов, создает новых и т.д. И только уже потом данные отображаются пользователю... Все три шага для пользователя должны выглядеть как единое целое (например в один тик таймера).
Цитата:
Ну допустим это картинка.
Ну допустим картинка может и не быть объектом, а может быть например его свойством (например для объекта баран можно определить свойство текущий вид, которое будет являться ссылкой на изображения жующего или бодающегося барана ). Это зависит от Вашей модели и расставляемых акцентов. В Вашем случае объектом должны быть бараны и некоторый контроллер. Контроллер отлавливает тики таймера и выполняет действия по созданию и уничтожению баранов их перемещении, отображению на канву и т.д. Крайне не рекомендую баранам создавать и убивать баранов...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 25.04.2012 в 13:26.
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уничтожение формы chandrasecar Общие вопросы Delphi 26 22.07.2013 22:55
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
Динамичесоке создание и уничтожение формы SERG1980 Общие вопросы Delphi 3 26.08.2009 10:05
Уничтожение потока SNUPY Общие вопросы Delphi 2 11.02.2009 22:47
Создание/уничтожение объектов nimf Общие вопросы Delphi 10 14.04.2008 10:54