Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.23;
Скачать: CL | DM;

Вниз

DelphiXМножество самостоятельных и идентичных друг другу объектов   Найти похожие ветки 

 
Pandemonium   (2003-07-07 09:45) [0]

Народ, у меня такая проблема. Есть один готовый объект, или класс,-картинка, способная двигаться по определенному закону, сталкиваться и т.д. Нужно каждое определенное время порождать(<=50) такой же, независимый с первым объект, самостоятельно живущий. Если просто создавать объект(в OnTimer), после первого, то он появляется в спрайте вместе с первым(слеплены!) и движется вместе с ним в кадре, притом что направление движения вообщем объктов случайно (4 направления, через Case of), Collision же одинаков. Как это сделать без описания, допустим 50 объектов, а пользуясь только одним?


 
Михаил Макушев   (2003-07-07 11:06) [1]

Пожалуй что никак. А по вашему как хранить информацию о свойствах (скажем положении, но в принципе и других) множества порожденных объектов, в одной и той же ячейке памяти (которая есть суть - переменная)?
Можете, допустим, создать динамический массив на требуемые X и Y и добавлять в него нужные координаты объектов по мере необходимости.


 
3d[Power] ©   (2003-07-07 18:48) [2]

1) Создавай объект в рандомной позиции, при этом проверяй расстояние до близлежащих объектов, если больше N, значит они слипаться не будут => создаем.

2) Если тебе надо чтобы они спавнились всегда из одной точки, то спавни с интервалом времени, и при спавне проверяй расстояние до близ объектов... если больше N ...


 
HoloCaust   (2003-07-08 01:17) [3]

Pandemonium: У меня была такая проблема и вот каким способом я её решил (с учетом того, что писал я на DelphiX) :

-создал класс нужных мне объектов

//Класс чего-то там
TClassSSS = class(TImageSprite)

-далее в var прописал:
ClassSSS: TClassSSS;
ClassSSSX: array[0..99] of Integer; //положение объектов по X
ClassSSSY: array[0..99] of Integer; //положение объектов по Y

-у меня была процедура столкновения рокеты с чем-нибудь, а далее ёё уничтожение и создание на этом месте взрыва

//Столкновение
procedure TRocket.DoCollision(Sprite: TSprite; var Done: Boolean);
var
n : integer;
begin
n:=1;
if Sprite is TMap then begin
ClassSSSX[1+n]:=trunc(X);
ClassSSSY[1+n]:=trunc(Y);
Self.Dead;

ClassSSS:= TClassSSS.Create(DXForm.DXSpriteEngine.Engine);
with TClassSSS(ClassSSS) do
begin
DXForm.DXWaveList.Items.Find("explo").Play(false);
Image := DXForm.DXImageList.Items.Find("explo");
Width := Image.Width;
Height := Image.Height;
X := ClassSSSX[1+n]; //Координата X
Y := ClassSSSY[1+n]; //Координата Y
Z := 99;
Collisioned := true
end;
end;

end;

-странно немного, но работает на все 100 или даже 200


 
Sorvi- Golova   (2003-07-09 15:35) [4]

Разрешается использование тегов форматирования текста:
жирный наклонный подчеркнутый,
а для выделения текста программ, используйте ...
и не забывайте закрывать теги! :)



Страницы: 1 вся ветка

Текущий архив: 2004.01.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
8-72844
nuflin
2003-09-20 12:02
2004.01.23
как при помощи компонента TMediaPlayer cохранить звук


14-72897
Думкин
2004-01-03 07:48
2004.01.23
С Днем Рождения! 3 января.


7-72962
Islander
2003-11-08 12:36
2004.01.23
Получение даты биосы не из биоса


1-72704
Adil Aliyev
2004-01-11 20:32
2004.01.23
Как добавить картинку в баз данных?


1-72768
Sour
2004-01-13 13:57
2004.01.23
1C