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

> Помогите написать бильярд
Nezhny_Vampir
сообщение 10.02.2006 20:39
Сообщение #1





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

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


Пишу бильярд.
Нужно узнавать, сколько времени была нажита клавиша (пробел).

Помогите, а то я не знаю, как перехватывать прерывания.
(В архиве ничего толком не нашел mad.gif )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
volvo
сообщение 10.02.2006 20:43
Сообщение #2


Гость






Я ж дал тебе ссылку! Ты там читал? Что "толком" тебе надо? Готовый код? А вопрос ты где разместил? В Теоретических? Сам виноват...
 К началу страницы 
+ Ответить 
volvo
сообщение 10.02.2006 21:49
Сообщение #3


Гость






Цитата(Nezhny_Vampir @ 10.02.2006 19:39) *
Нужно узнавать, сколько времени была нажита клавиша (пробел)...
а то я не знаю, как перехватывать прерывания.

Вот так:
uses dos, crt;
var
  lastscan, scan: byte;
  old_09h: pointer;

  space_pressed, space_released: boolean;

{$f+}
procedure new_int_09h; interrupt;
begin
  scan := port[$60];
  inline($ff/ $1e/ >old_09h);
end;
{$f-}

function GetTime: LongInt;
Var h, m, s, ms: Word;
begin
  Dos.GetTime(h, m, s, ms);
  GetTime := longint(ms) + 100 * (s + 60 * (m + 60 * h));
end;

var
  T, T2: longint;

begin
  getintvec($09, old_09h);
  setintvec($09, @new_int_09h);

  space_pressed := false;
  space_released := false;

  scan := 128;
  writeln('press ESC to exit...');

  repeat
    if not space_pressed then
      repeat until scan < 128;

      if scan = $39 then begin
        T  := gettime;
        repeat until scan > 128;
        T2 := gettime;
        writeln('time = ', (T2 - T):15);
      end;

    while keypressed do readkey;

    lastscan := scan; scan := 128;
  until lastscan = 1;

  setintvec($09, old_09h);
end.

Жмешь пробел, держишь его... Потом отпускаешь, и смотришь, сколько он был нажат. Для выхода - Escape...
 К началу страницы 
+ Ответить 
Nezhny_Vampir
сообщение 11.02.2006 11:20
Сообщение #4





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

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


СПАСИБО!!!
smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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