Как я могу ждать нажатия кнопки в цикле? - PullRequest
0 голосов
/ 29 октября 2009

Скажем, у меня есть простая программа, которая имитирует настольную игру с множеством игроков, которые по очереди бросают кубики, чтобы перемещаться по доске. Игроки могут быть людьми или компьютером.
Если бы это была игра в стиле командной строки, я мог бы просто сделать цикл для перебора игроков, который вызвал бы функцию diceRoll для этого игрока.

Если игрок компьютерный игрок, diceRoll просто говорит компьютеру бросить кости.
Если игрок человек, diceRoll будет ждать, пока пользователь не введет команду броска, а затем продолжит.

Как я могу перенести эту идею в графический дизайн? Я не думаю, что имеет смысл постоянно проверять, нажата ли кнопка прокрутки. Я работаю с ActionScript 2, но идеи могут быть на любом языке, который вы хотите. Я просто хотел бы высказать несколько мнений о том, как лучше всего это спроектировать. Я не думаю, что есть какая-то функция waitForButtonPress, о которой я не знаю?

Ответы [ 2 ]

1 голос
/ 03 ноября 2009

Я думаю, что нашел решение, которое мне нравится. Основной класс игры будет иметь функцию 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, чтобы продолжить игру. Когда компьютер завершает ход, поток все еще находится в цикле while, поэтому игра продолжится.

0 голосов
/ 29 октября 2009

в зависимости от игры, если у вас N ходов, а каждый следующий ход - ход людей, тогда вы можете просто вызвать getUserResponse () из цикла, используя if elses ..

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

и если есть какие-либо ограничения, проверьте их в условии if.

...