Змінюй хід війни! Допомагай ЗСУ!
  • Знижка на баннерну рекламу 30%! Банер на всіх сторінках сайту, в мобільній та десктопній версії за 14 тис. грн на місяць. Статистика сайту. Контакт: kharkovforum.com@gmail.com

VS 2010 c+ массив объектов класса

  • Автор теми Автор теми agentrazvedki
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 21.11.2010
Повідом.: 38
VS 2010 c+ массив объектов класса

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

ЗЫ Чувствую, что упускаю что-то очевидное, но непойму - что:confused:
 
каждая точечка класс, в конструкторе координаты где появиться, ну или пустой конструктор, с случайной координатой, метод двигаться(), 2 приватных поля координаты, 2 ф-ции доступа на чтение этих координат

создается список или массив класса с точкой

запускается поток, в котором с определенной переодичностью все элементы списка выполняют ф-ю двигаться()

новым потоком в список кидается первая точка с пустым конструктором, появляется где попало и дергается, спустя некоторое время, дергаешь координаты всех элементов в списке, создаешь новые точки на их координатах поделились

вот как бы и все, можно наверное как-то даже без потоков только это сложнее выйдет
 
А что рандомом предварительно установив сранд сложно задавать координаты и направление движения?
 
ну вроде как тс хо чтобы делилась точечка, а не тупо появлялась хз где, движением должен заниматься класс точки, ф-я двигаться в ней и рандом
 
ну вроде как тс хо чтобы делилась точечка, а не тупо появлялась хз где, движением должен заниматься класс точки, ф-я двигаться в ней и рандом

Если точка должна делиться то через Н циклов хода нужно просто создавать точки наследники в том же месте где находились их базовые точки, а дальше при использовании рандома они пойдут своим путем.
 
я, конечно, не биолог, не знаю как бактерии делятся, но, по-моему, нужно создавать не там где находились, а там где находятся
 
1) заводишь список объектов.
2) класс объекта будет содержать информацию о координатах, размерах, цвете и что там тебе еще нужно
3) заводишь два метода UpdateState и RenderScene
4) в метод UpdateState добавляешь цикл, который пробегается по объектам в списке и изменяет их координаты. В этом-же методе при обходе объектов добавляешь создание нового объекта, если выполнилось какое-то условие
5) в метод RenderScene добавляешь код который пробегается по списку объектов и вызывает функци отрисовки для каждого из них
6) добавляешь таймер по которому вызывается UpdateState
7) в конец UpdateState добавляешь вызов Invalidate чтобы инициировать отрисовку
8) в OnPaint окна добавляешь вызов RenderScene
 
Вот еще патернов в хеловорде с бактериями нехватало.
Да и не модно это уже, прошли времена лозунга ни комита без патерна, о чем свидетельствует и статистика на линкедине.
 
нууу... модно, не модно... за-то это работает и можно эффективно применять ;)
и кстати реализация прототипа тут не займёт больших усилий, но за-то эффективно решит проблему.
 
читать std::list или std::vector
писать конструктор копирования
использовать container.push_back(Point(randomPoint))
исполнять
 
Назад
Зверху Знизу