كيف يمكنني التحقق مما إذا تم إصدار زر الماوس ، ثم تنفيذ إجراء مرة واحدة في Borland Pascal 7.0؟

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

  •  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 ولكنني أفترض أنه يشير إلى ما إذا كان الزر الأيسر قد انخفض أم لا)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top