Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 12:11   #1
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию ожидание внутри процедуры

есть ли какая-то простая процедура ожидания (по типу sleep), только ожидающая внутри процедуры, а не тормозящая весь проект?
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 01.06.2009, 12:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,803
По умолчанию

Цитата:
а не тормозящая весь проект?
Врядли. Разве что ты эти действия распаралеелишь в другой поток.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2009, 12:22   #3
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

тогда расскажите, как в играх организуется система, когда есть много взрывов, таймеры динамически создаются?
кстати, речь идет о Delphi 7, там же вроде как все процедуры по событиям параллельно идут?
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 01.06.2009, 12:33   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,803
По умолчанию

Цитата:
когда есть много взрывов
О-о-о..
Чего не знаю на том Мальчиш-кибалчиш...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2009, 13:27   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

игры это многопоточные приложения
следовательно тормозится поток
события в одном потоке последовательны(вы протрейсите и заметите это)

еще возможен счетчик потоковый
например:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if Timer1.Tag=0 then Timer1.Tag:=10;//ставим задержку
 if Timer1.Tag=5 then ShowMessage('5 sec expired');//нужное время прошло
 Timer1.Tag:=Timer1.Tag-1;//отсчет ведем
end;
но это все конечно криво как-то
хотя можно дополнить и улучшить
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.06.2009, 13:52   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

В играх раскидывают по потокам только "очень разные" действия (расчёт физики, отрисовка, звук...) иначе сложности с синхронизацией перекрывают все достоинства.

Когда много взрывов - это что-то типа

Код:
procedure onTimer();
begin
...
  GameEngine.Render();
...
end;

procedure TGameEngine.Render();
begin
...
  GameEngine.Update();
  GameEngine.Draw();
...
end;

procedure TGameEngine.Update();
begin
...
    for i=0 to numberOfExplosions do Explosion[i].NextFrame
...
end;
в самом буквальном виде. Игровые объекты оформляются в виде классов и в основном цикле с ними что-то делается
пыщь
JTG вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить значения переменной внутри процедуры kartalex Помощь студентам 5 20.11.2010 18:44
использование 2х мерных массивов внутри функции или процедуры kartalex Общие вопросы Delphi 17 22.09.2010 16:30
Запуск процедуры из процедуры с дополнением 1sal1 Общие вопросы Delphi 3 06.10.2008 21:54
Ожидание окончания вызванного процесса Johnson Win Api 11 16.07.2008 23:11
вопрос внутри g1m Помощь студентам 8 24.02.2008 15:05