Comment puis-je vérifier si le bouton de la souris est relâché, et puis exécutez une procédure une fois dans Borland Pascal 7.0?
-
24-09-2019 - |
Question
J'utilise Borland Pascal 7.0, et je voudrais faire un jeu de machines à sous (Si 3 nombres aléatoires sont les mêmes, vous gagnez). Le problème est que lorsque je clique sur le bouton Démarrer (Inditas) dans le menu, la procédure exécute plusieurs fois jusqu'à ce que je relâche le bouton de la souris. On m'a dit que je devrais vérifier si le bouton de la souris est relâché avant d'exécuter une fois la procédure. Comment puis je faire ça? Voici ce que le menu ressemble à:
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;
Merci, Robert
La solution
Dans le cas où l'unité de la souris ne fournit pas un moyen d'attendre un clic de souris, ou quelque chose de similaire,
vous pouvez simuler un comportement « bouton publié » avec quelques variables de drapeau.
Exemple:
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 (...);
(Je ne sais pas ce que m.left
est, mais je suppose qu'il indique si le bouton gauche est en panne ou non)