كيف يمكنني الانتظار للحصول على اضغط على زر في حلقة؟

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

  •  08-07-2019
  •  | 
  •  

سؤال

ويقول لدي برنامج بسيط الذي يحاكي لعبة المجلس مع عدد من اللاعبين الذين يتناوبون المتداول الزهر على التحرك عبر مجلس. يمكن للاعبين أن يكون الإنسان أو الكمبيوتر.
إذا كان هذا على غرار لعبة سطر الأوامر، ويمكنني أن جعل مجرد حلقة تكرار على اللاعبين الذي من شأنه أن استدعاء الدالة diceRoll لهذا اللاعب.

وإذا كان لاعب هو لاعب الكمبيوتر، diceRoll ببساطة يحكي الكمبيوتر للفة من الزهر.
إذا كان لاعب هو الإنسان، وانتظر حتى diceRoll مدخلات المستخدم الأمر لفة ثم لا يزال مستمرا.

وكيف يمكنني تحويل هذه الفكرة إلى التصميم الجرافيكي؟ لا أعتقد أنه من المنطقي أن تحقق باستمرار لمعرفة ما إذا تم الضغط على زر لفة. أنا أعمل مع أكشن 2، ولكن يمكن أن تكون الأفكار في أي اللغة التي تريدها. أود فقط بعض الآراء بشأن أفضل طريقة لتصميم هذا. أنا لا أفترض هناك نوعا من وظيفة "waitForButtonPress" أنني لا أعرف عنه؟

هل كانت مفيدة؟

المحلول

وأعتقد أنني قد وجدت الحل الذي أحب. فإن الطبقة اللعبة الرئيسية لديها وظيفة nextTurn مثل ذلك:

nextTurn() {
   bool guiSet = false
   while (guiSet = false) {
      //Get the next player
      if (next player is human) {
         //enable the gui (ie. the 'Roll Dice' button)
         guiSet = true
      } else {
         //The player is a computer
         //Have the computer roll the dice and make any necessary decisions
      }
   }
}

عند لاعب البشري يتم الانتهاء من جانبه، سيتم إجراء مكالمة إلى nextTurn مواصلة اللعب. عند انتهاء كمبيوتر بدوره، تدفق ما زال في حلقة مع ذلك سوف تستمر اللعبة.

نصائح أخرى

واعتمادا على اللعبة إذا كان لديك N ويتحول كل منعطف الآخر هو البشر يتحول ثم هل يمكن أن مجرد دعوة لgetUserResponse () من داخل حلقة باستخدام إذا إلسس ..

for i to N
if(i%2==0)
getUserRoll()
else
getComputerRoll()

وإذا كان هناك أي contraints تحقق لهم في حال CONDITON.

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