Como posso verificar se o botão do mouse foi liberado e ENTÃO executar um procedimento uma vez no Borland Pascal 7.0?
-
24-09-2019 - |
Pergunta
Eu uso o Borland Pascal 7.0 e gostaria de fazer um jogo de slots (se 3 números aleatórios forem iguais, você ganha).O problema é que quando clico no botão iniciar (Inditas) do menu, o procedimento é executado diversas vezes até eu soltar o botão do mouse.Disseram-me que deveria verificar se o botão do mouse foi liberado antes de executar o procedimento uma vez.Como eu posso fazer isso?Esta é a aparência do menu:
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;
Obrigado, Roberto
Solução
Caso a unidade do mouse não forneça uma maneira de esperar por um clique do mouse ou algo semelhante,
você pode simular um comportamento de "botão liberado" com algumas variáveis de sinalização.
Exemplo:
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 (...);
(não sei o que m.left
é, mas presumo que indica se o botão esquerdo está pressionado ou não)