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

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


Новичок
*

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

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


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


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

 





- Текстовая версия 1.12.2021 19:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name