Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DoCollision B DelphiX [Delphi, DelphiX, Windows]


Страницы:   1 2 3 4 5 6 7 8 9 10

Аццкий_рыцарь:) ©   (2005-12-29 14:07:00) 

когда спрйт анимируется, то DoCollision происходит только на первом его кадре. А мне нужно что б на всех кадрах происходило колижн ХЕЛП!


Аццкий_рыцарь:)   (2006-01-10 13:48:00) [101]

4) А КАК?????? МОЖЕШЬ ПОЛНЫЙ КОД НАПИСАТЬ?


Cash   (2006-01-10 09:44:00) [102]

Аццкий_рыцарь:)   (09.01.06 18:44) [87]:
3) Поправочка, мой таймер к Омеге, родной от Омеги он абсолютно другой.
Мой тоже с DxTimer-ом не родим.
Таймер, этож абсолютно левая штука. Бери хоть из закладки System,
тока он для игр негоден.
Моя переделка таймера очень похожа на PowerTimer из Power Draw 3.
У него нет interval, рисует всегда с макс. скоростью,
есть ProcessFPS, частота в секунду сробатывания события OnProcess,
то есть перемещений. три флага: CanRealTime, CanRender, CanProcess,
и три события к ним OnRealTime (раз в сек.), OmRender (макс. возм. скорость), OnProcess (ProcessFPS раз в сек.)

4) Вот и я про что говорю. Оставь монстров 200 - 250, а трупы бери и рисуй
на бэкграунде.


Аццкий_рыцарь:)   (2006-01-09 18:44:00) [103]

1) Игру посмотрел :) прикольно. Внатуре много спрайтов и неглючит. Но, например если играть в мою игру 30 мин, и постоянно валить монстров, то на бекграунде надо будет постоянно  по 2000 монстров , у каждого из которых свои координаты и все остальное :(

2) 2 это типа на английсrом "to" , тоесть если дословно перевести 2Jus - To Jus - Обращаюсь к Jus :)

3) А таймер от омеги имеет все те же функции что и ДелфиХ таймер? и он будет работать так же с DXDraw?

4) Ну смотрите. Зачем мне грузить память постоянно всякими лишними монстрами, создавать трупов, если на рисунке бекграунда можно сразу нарисовать монстра 1 раз и никогда больше к нему не возвращаться?


Cash   (2006-01-09 14:18:00) [104]

Аццкий_рыцарь:)   (09.01.06 00:59) [78]:
... когда прорисовываешь постоянно через ДХтаймер то приложение  ...
А DxTimer вообще вещь мерзопакостная и очень нехорошая!
Найди набор Power Draw 3, бери таймер от туда.
Или, если не хоца, могу дать свой аналог для Омеги.
Установишь его (он встанет на закладку Omega), и работай
дальше!


JUS   (2006-01-09 12:48:00) [105]

Если долго качается можеш на моём "сайте":) скачать, там быстрее.

http://www.sidorov-vadim.narod.ru

Ещё можеш редактор карт скачать и посмотреть скриншоты:)


JUS   (2006-01-09 12:45:00) [106]

Аццкий_рыцарь:) ты ссылку то посмотрел или нет!? http://www.webfile.ru/732575


JUS   (2006-01-09 12:43:00) [107]


> > Аццкий_рыцарь:)   (09.01.06 00:59) [78]
> > 2 ВСЕ :)

А чё значит "2" перед "ВСЕ"?
> Аццкий_рыцарь:)   (07.01.06 23:44) [68]
> 2Jus кстати, можешь, если не сложно еще раз игру выложить?
>  а то там архив поврежден :(


И "2Jus"?


JUS   (2006-01-09 10:25:00) [108]


> Аццкий_рыцарь:)   (09.01.06 02:13) [80]


> 2. Почему? Кто сказал?

Это всё равно что есть суп вилкой:)


Cash   (2006-01-09 08:55:00) [109]

Аццкий_рыцарь:)   (09.01.06 02:13) [80]:
2: Это ни кто не говорил. Но это так есть!
При всем этом, такое ни кто не запрещал!


Аццкий_рыцарь:)   (2006-01-09 02:13:00) [110]

1. Означает что я обращаюсь ко всем тем, кто принимал участие в обсуждении данного топа :)
2. Почему? Кто сказал?


JUS   (2006-01-09 01:41:00) [111]


> Аццкий_рыцарь:)   (09.01.06 00:59) [78]
> 2 ВСЕ :)
>
> когда прорисовываешь постоянно через ДХтаймер то приложение
> начинает УЖАСНО "углючить" :( фпс где-то 25. А вот если
> в Image спрайта рисовать... тогда делфи будет пофиг что
> там, а сам спрайт он без глюков рисует

1.Что такое ВСЕ :) ?
2.Рисовать в спрайте - извращение :)


Аццкий_рыцарь:)   (2006-01-09 00:59:00) [112]

2 ВСЕ :)

когда прорисовываешь постоянно через ДХтаймер то приложение начинает УЖАСНО "углючить" :( фпс где-то 25. А вот если в Image спрайта рисовать... тогда делфи будет пофиг что там, а сам спрайт он без глюков рисует


JUS   (2006-01-08 21:42:00) [113]


> Аццкий_рыцарь:)   (07.01.06 23:44) [68]
> 2Jus кстати, можешь, если не сложно еще раз игру выложить?
>  а то там архив поврежден :(

Ну чё скачалась? смотрел?


Cash   (2006-01-08 19:01:00) [114]

JUS ©   (08.01.06 12:02) [74]:
Увидев этот пост, усомнился, что Restore есть! (для меня это норма)
Поподробнее про Restore:
С англиского я бы перевел, как "Сбросить" или "Обновить".
Есть такая вещь, называется она DxImageList.Items.LoadFromFile('');.
Кто нибудь смтрел внутрь? Там в конце в самом написано Restore;,
то есть Self{DxImageList.Items}.Reastore;! А там внутри написано:
For <bla bla bla> do Items[i].Restore;
То есть просто при загрузке файлика происходит Restore каждому
итему (Item)! А внутри самой этой Restore; всего лишь обновление
данных для вывода в формате DirectDraw; !!!! Если нарисовать
что нибудь и не вызвать Restore, ничего не произойдет!

Аццкий_рыцарь:)   (08.01.06 17:48) [75]:
BgImage - это типа (я же не знаю как это у тебя называется) твой
спрайт, который ты используешь в качестве заднего фона.
Сокращение от BackgroundImage.
Ну а про Restore я уже более или менее "не" :) понятно объяснил.


Аццкий_рыцарь:)   (2006-01-08 17:48:00) [115]

Что такое BgImage.restore, и с чеми его едят? О_о


JUS   (2006-01-08 12:02:00) [116]

Первый раз про Restore слышу. Поподробнее можеш?)


Cash   (2006-01-08 09:26:00) [117]

Аццкий_рыцарь:)   (07.01.06 23:00) [66]:
... монстров 200? то постоянно надо рисовать каждого  ...
Надо надо, если тебе это надо, то надо.
Так, товарищь! У тебя есть куча спрайтов. И DxSpriteEngine.
У тебя есть DxImageList. Картинки монстра в DxImageList
находится, так? Причем, и мертвого, и живого, так?
Монстров ты создаешь, и (наверное) картинку им ставишь в конструкторе,
или после создания уже говоришь:

Monster.Image:=DxImageList.Items.Find('Monster');
?
А что тебе помешает сделать два указателя на картинки для монстра?

Monster.Image:=DxImageList.Items.Find('Monster');
Monster.DeathImage:=DxImageList.Items.Find('DeathMonster');
?
Делаешь у монстра булевский флаг IsLive. И поцедуры DoMove,DoDraw и
DoCollision подчиняешь этому флагу.
(В конструкторе, естественно, флаг надо поднять)

Procedure TMonster.DoMove(MoveCount: Integer);
begin
 if IsLive then begin
   //<Живем и радуемся жизни> :)
 end;
end;

Procedure TMonster.DoDraw;
begin
 if IsLive then Image.Draw(<.....>)
 else DeathImage.Draw(<.......>);
end;

Procedure TMonster.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
 if IsLive then begin
   // <Проверяем столкновения>
 end;
end;


Как результат, тебе не надо никуда ничего рисовать.
Если спрайт мертв, то он не будет анимироваться,
процедуры DoMove и DoCollision будуть просто пролетать.
При этом ты и остальные будут видеть мертвый спрайт.
И когда надо, то не создавать нового, а снова поднять
флаг жизни (IsLive) спрайту и переместить его на новые координаты.

-----------------------------------------------------------------------------
ЗЫ: А если охота, чтоб через некоторое время все действо проходило на
горе трупов монстров, то заготовь одну большую картинку заднего фона,
рисуй на ней спрайт мертвого монстра, и делай BgImage.Restore.
тогда появится картинка мертвого на фоне всех остальных.
(Блин, и как я сразу про Restore не вспомнил, без него изменения на
битмапе недействительны)


Аццкий_рыцарь:)   (2006-01-08 02:21:00) [118]

Блин, у меня проблема с инетом :(скорость 800 байт в секунду может завтра станет нормальной...


JUS   (2006-01-08 01:11:00) [119]

Кстати весит он 1.7мб


JUS   (2006-01-08 01:10:00) [120]

Разместил SFX-архив (exe-шный), там точно RAR не нужен:-)
http://www.webfile.ru/732575


Страницы:   1 2 3 4 5 6 7 8 9 10

Наверх

Титульная страница Поиск, карта сайта Написать письмо