Come posso verificare se il pulsante del mouse viene rilasciato e quindi eseguire una procedura volta in Borland Pascal 7.0?

StackOverflow https://stackoverflow.com/questions/2575529

  •  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

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top