IPB
ЛогинПароль:

> Подпрограмма, По созданию задержки
1234
сообщение 31.01.2007 17:40
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Кто знает, как создать подпрграмму по созданию задержки(скажем в 1 секунду). Так, например, в игре она необходима для того, чтобы объект с определённой скорстью совершал движение. Cпасибо за внимание.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TarasBer
сообщение 31.01.2007 21:28
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Цитата(1234 @ 31.01.2007 17:40) *

Кто знает, как создать подпрграмму по созданию задержки(скажем в 1 секунду). Так, например, в игре она необходима для того, чтобы объект с определённой скорстью совершал движение. Cпасибо за внимание.


Итак: НИКАКОГО GetTime!
Никаких лишних модулей!
Делаем быстро, ёмко и эффективно.
В разделе переменных пишем:

var
Time: longint absolute $0040: $006C;
T: longint;


Итак, мы завели 2 переменные: Time - это количество 55милисекундных интервалов, прошедших с полуночи (точнее: один такой интервал по времени - это $10000/$1234DC секунд). Значение переменной Time присваивается автоматически железом, потому что она расположена точно по адресу системного времени. А мы можем спокойно её считывать.
Можно, конечно, не заводить вообще этой переменной, и вместо Time писать каждый раз MemL[$0040: $006C], но так по-моему лучше.
Далее, переменная T - вспомогательная.
Если надо, чтобы программа поворяла один и тот же цикл, делая в каждом цикле задержку 55 млс, то в каждом цикле пишем:

repeat
...
while T = Time do; {упаси бог забыть это двоеточие: иначе программа зависнет}
T := Time;
until ...


причём это T должно использоваться ТОЛЬКО в этом участке кода: иначе программа полетит с неимоверной скоростью.
А задержка в одну секунду (приблизительно) делается так:

for i := 0 to 18 do begin {18.2 - число 55млсекундных интервалов в секунде}
while T = Time do;
T := Time;
end;


Это будет задержка не совсем точно в 1сек, но бОльшей точности на Павкале не достичь.
Также с помощью Time можно мерять время.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
1234   Подпрограмма   31.01.2007 17:40
klem4   Delay(ms: Word);   31.01.2007 17:52
1234   Да, но в моей программе данная проедура не вкатыва...   31.01.2007 19:12
klem4   Ну если не вкатывает то это совсем другое дело, ...   31.01.2007 19:17
1234   Необходимо использовать процедуру GetTime. Кстати,...   31.01.2007 19:23
volvo   Зачем ты для организации паузы хочешь использовать...   31.01.2007 19:34
TarasBer   Кто знает, как создать подпрграмму по созданию за...   31.01.2007 21:28
klem4   Хотелось бы услышать от автора, по какой причине н...   31.01.2007 21:35
TarasBer   Хотелось бы услышать от автора, по какой причине ...   1.02.2007 0:08
volvo   TarasBer, А давай, ТЫ не будешь решать за автора, ...   31.01.2007 21:53
klem4   Боюсь тебя огорчить, но это интернет, а не делов...   1.02.2007 12:00
TarasBer   Боюсь тебя огорчить, но это интернет, а не делова...   1.02.2007 13:32
Altair   Системный таймер наверно...   1.02.2007 17:44
1234   Хорошо. Здесь вроде бы понятно. Спасибо за советы....   1.02.2007 18:53
TarasBer   Хорошо. Здесь вроде бы понятно. Спасибо за советы...   1.02.2007 20:30
klem4   Поиск -> menu Выкладывались и текстовые и гр...   1.02.2007 20:40
volvo   :dry: Можешь не писать... Одолжение что-ли делаеш...   1.02.2007 22:49
1234   Из любезно предоставленного списка(спасибо volvo) ...   2.02.2007 16:05
volvo   Если ты внимательно читал информацию по приведенны...   2.02.2007 17:02
Тём@   Не знаю нужно ли это ещё. Когда-то написал для зад...   11.02.2007 1:48
volvo   То есть, читать Правила ты не изволишь? Я про пунк...   11.02.2007 1:55
st1x   задержу можно ещё выполнять командой sleep(2000) н...   23.03.2012 19:07


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 6:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"