Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
1-72767
KA
2004-01-13 15:14
2004.01.23
настройки среды


1-72716
agent008
2004-01-12 08:49
2004.01.23
Как передать фокус


3-72684
Паша_
2003-12-24 20:43
2004.01.23
Удалить удаленное...


1-72794
-=MAK=-
2004-01-14 11:20
2004.01.23
Как спрятать чужое окно?


1-72805
Димон
2004-01-13 18:00
2004.01.23
печать текста с разбиением на страницы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский