Как я могу проверить, выпущена ли кнопка мыши, а затем выполнить процедуру один раз в Borland Pascal 7.0?
-
24-09-2019 - |
Вопрос
Я использую Borland Pascal 7.0, и я хотел бы сделать игровую интервал (если 3 случайных числа одинаковы, вы выигрываете). Проблема в том, что когда я нажимаю на кнопку Пуск (inditas) в меню, процедура выполняется много раз, пока не выпустил кнопку мыши. Мне сказали, что я должен проверить, выпущена ли кнопка мыши перед выполнением процедуры один раз. Как я могу это сделать? Вот как выглядит меню:
procedure eger;
begin;
mouseinit;
mouseon;
menu;
repeat
getmouse(m);
if (m.left) and (m.x>60) AND (m.x<130) and (m.y>120) and (m.y<150) then
teglalap(90,90,300,300,blue);
if (m.left) and (m.x>60) AND (m.x<130) and (m.y>160) and (m.y<190) then
jatek(a,b,c,coin,coins);
until ((m.left) and (m.x>60) AND (m.x<130) and (m.y>240) and (m.y<270));
end;
Спасибо, Роберт
Решение
Если мышиное устройство не обеспечивает способ ожидания щелчка мыши или что-то подобное,
Вы можете имитировать «кнопку выпустить» поведение «выпущенного» с парой переменных флага.
Пример:
button_down := false; // 1
repeat
button_released := false; // 2
getmouse(m);
// 3
If m.left and not button_down Then button_down := true;
If not m.left and button_down Then
Begin
button_released = true;
button_down := false;
End;
//
if button_released and ... then ...
if button_released and ... then ...
until (...);
(Я не знаю, что m.left
это но я предполагаю, что указывает, находится ли левая кнопка вниз или нет)
Не связан с StackOverflow