Come posso verificare se il pulsante del mouse viene rilasciato e quindi eseguire una procedura volta in Borland Pascal 7.0?
-
24-09-2019 - |
Domanda
Io uso Borland Pascal 7.0, e mi piacerebbe fare un gioco di slot (se 3 numeri casuali sono gli stessi, si vince). Il problema è che quando clicco sul pulsante di avvio (Inditas) sul menu, la procedura viene eseguita più volte fino a quando ho rilasciare il pulsante del mouse. Mi è stato detto che avrei dovuto controllare se il pulsante del mouse viene rilasciato prima di eseguire la procedura di una volta. Come posso fare ciò? Ecco cosa gli sguardi di menu come:
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;
Grazie, Robert
Soluzione
Nel caso in cui l'unità del mouse non fornisce un modo per aspettare un clic del mouse, o qualcosa di simile,
è possibile simulare un comportamento "tasto rilasciato" con un paio di variabili di bandiera.
Esempio:
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 (...);
(non so che cosa è m.left
ma suppongo che indica se il pulsante sinistro è inattivo o non)