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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Подпрограмма, По созданию задержки
сообщение
Сообщение #1


Новичок
*

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

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


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


Perl. Just code it!
******

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

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



Delay(ms: Word);




--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Да, но в моей программе данная проедура не вкатывает:нужно конкретно задержка в 1 секунду. Не всё так просто
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

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

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


Цитата
проедура не вкатывает


Ну если не вкатывает то это совсем другое дело, {$TELEPATHY ON} ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Необходимо использовать процедуру GetTime. Кстати, какую посоветуете подобрать менюшку(самую простую).

Сообщение отредактировано: 1234 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Зачем ты для организации паузы хочешь использовать процедуру, возвращающую системное время - непонятно... Я не говорю, что это невозможно, в принципе, можно и извратиться, например, так:

curr_time := GetTime;
while GetTime - curr_time < 100 do; { время - в сотых долях секунды }

( реализация функции GetTime - здесь: Quicksort )

Только нужно ли это? unsure.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Perl. Just code it!
******

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

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


Хотелось бы услышать от автора, по какой причине нельзя использовать Delay(1000) ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






TarasBer,
Цитата
Итак: НИКАКОГО GetTime!
Никаких лишних модулей!
А давай, ТЫ не будешь решать за автора, что ему ДА использовать, а что - НЕТ, договорились? А то слишком самоуверенно получается, вроде как ДО тебя об этом не знали, а ты пришел, и всех научил... Да, кстати, в том, что ты привел, есть одно маленькое НО, которое моментально превращается в ОГРОМНОЕ - ты не знаешь, какой компилятор используется... Попробуй написать программу, работающую по ТВОЕМУ алгоритму, и скомпилировать ее в FPC, например... Получится?

А раздел, я бы хотел напомнить, НЕ чисто Паскалевский, так что решение должно быть по крайней мере переносимо, а не рассчитано ТОЛЬКО на Турбо Паскаль...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


Цитата(klem4 @ 31.01.2007 21:35) *

Хотелось бы услышать от автора, по какой причине нельзя использовать Delay(1000) ?

Причина в том, что задержка очень сильно зависит от компьютера. У меня, например, этот делэй даёт отнюдь не секунду, а намного меньше.

Цитата

А давай, ТЫ не будешь решать за автора, что ему ДА использовать, а что - НЕТ, договорились? А то слишком самоуверенно получается, вроде как ДО тебя об этом не знали, а ты пришел, и всех научил... Да, кстати, в том, что ты привел, есть одно маленькое НО, которое моментально превращается в ОГРОМНОЕ - ты не знаешь, какой компилятор используется... Попробуй написать программу, работающую по ТВОЕМУ алгоритму, и скомпилировать ее в FPC, например... Получится?

А раздел, я бы хотел напомнить, НЕ чисто Паскалевский, так что решение должно быть по крайней мере переносимо, а не рассчитано ТОЛЬКО на Турбо Паскаль...

Я на ТЫ не обращался ни к кому... Хамите, молодой человек...
Да, такой метод пригоден только для досовского паскаля. Если у автора темы именно турбо паскаль, то я всё правильно сказал. Если нет - то извините.


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


Perl. Just code it!
******

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

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


Цитата
Я на ТЫ не обращался ни к кому


Боюсь тебя огорчить, но это интернет, а не деловая встреча ...

Цитата
Причина в том, что задержка очень сильно зависит от компьютера. У меня, например, этот делэй даёт отнюдь не секунду, а намного меньше.


Ну так можно сделать параметр Delay переменной (в разных местах с разными коэффициентами) и позволить пользователю изменять значение этой переменной дабы настроить программу ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


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

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

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


Цитата(klem4 @ 1.02.2007 12:00) *

Боюсь тебя огорчить, но это интернет, а не деловая встреча ...
Ну так можно сделать параметр Delay переменной (в разных местах с разными коэффициентами) и позволить пользователю изменять значение этой переменной дабы настроить программу ...


В таком случае предлагаю такой вариант:

for i := 0 to ms - 1 do {для большего эффекта можно вместо 10 написать r, где r - типа real}
D := sin(cos(arctan(10))); {или включить эмуляцию сопроцессора}


Естественно, выключив оптимизацию.
Даже без цээртэ обошлись.
Параметр ms пусть каждый сам подбирает...

Всё-таки Delay это несерьёзно. Надо смотреть на время. В Паскале для это есть обращение к конкретному адресу, а в дельфе есть функция Time возвращающая значение типа double, причём единица - это 1 год. И меняется это значение чуть ли не каждую тысячную долю секунды (винда такты считает что ли?)


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


Ищущий истину
******

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

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


Цитата
И меняется это значение чуть ли не каждую тысячную долю секунды (винда такты считает что ли?)

Системный таймер наверно...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


Хорошо. Здесь вроде бы понятно. Спасибо за советы. А что насчёт менюшки.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


Цитата(1234 @ 1.02.2007 18:53) *

Хорошо. Здесь вроде бы понятно. Спасибо за советы. А что насчёт менюшки.


На такой вопрос могу ответить только вопросом. Что вы называете менюшкой? Если полноценный интерфейс, то: в чём вы пишете? Если в дельфе, то там менюшку без проблем сделать. Паскаль - если программа будет в текстовом режиме - то турбо вижн есть (сам с ним никогда не работал, если честно). А для графического режима... Я, когда мне понадобилось, сам руками всё писал. Довольно увлекательно, между прочим.

А если примитивную менюшку, то не знаю... Ну по центру просто выводишь несколько строчек, и одна из них обведена прямоугольником. А стрелочки прямоугольник двигают. И ентер выбирает то, что нужно. Могу кусок кода написать, если попросите.


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


Perl. Just code it!
******

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

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


Цитата
А что насчёт менюшки


Поиск -> menu

Выкладывались и текстовые и графические версии


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Цитата(1234)
А что насчёт менюшки.

Смотри в поиске, вот здесь: Меню в Паскале
или здесь: http://volvo71.narod.ru/menus.htm

Цитата(TarasBer)
Могу кусок кода написать, если попросите.
dry.gif Можешь не писать... Одолжение что-ли делаешь? Спасибо, обойдемся...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

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

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


Из любезно предоставленного списка(спасибо volvo) меня более других заинтересовало меню во фрейме(из одноимённого раздела) по кодовым словом asd. Остаётся вопрос: как можно выбирать стрелками "вверх" и "вниз" нужный раздел(прчём, чтобы он высвечивался).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Цитата
как можно выбирать стрелками "вверх" и "вниз" нужный раздел (прчём, чтобы он высвечивался)
Если ты внимательно читал информацию по приведенным ссылкам, то там (везде, кстати) есть как раз то, что нужно - как ждать нажатия клавиши, как выбирать цвет активной/неактивной строки, и все остальное... Отрисовал то, что тебе очень уж понравилось, и после вызова Bar3D начинай цикл обработки клавиатуры (вместо трех OutTextXY)...

Меню - это такое неблагодарное дело, которое никто от начала и до конца ЗА ТЕБЯ делать не будет, ибо то, что нравится тебе не вызывает у меня ничего, кроме стремления поберечь глаза и закрыть быстро эту программу... Так что... Набросок у тебя есть (и не один, а целых 4) - дорабатывай...

Будут КОНКРЕТНЫЕ вопросы - приходи... А то ты уже и так отклонился от темы топика (не забыл, для чего она создавалась?) - не про меню она была, не надо делать из темы бардак...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

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

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


Не знаю нужно ли это ещё. Когда-то написал для задержки на определённое время. Не идеально конечно... Попробуйте nea.gif

Правила Форума (пункт 10) - архив не содержащий исходников удален...

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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