2009-10-29 65 views
0

假设我有一个简单的程序,模拟一个棋盘游戏,其中有多个玩家轮流掷骰子在棋盘上移动。玩家可以是人或电脑。
如果这是一个命令行风格的游戏,我可以简单地创建一个循环来遍历那些可以调用该玩家的diceRoll函数的玩家。如何等待循环中的按钮按下?

如果玩家是电脑玩家,diceRoll只是告诉电脑掷骰子。
如果玩家是人,则diceRoll将等待,直到用户输入滚动命令,然后继续。

我该如何将这个想法转化为平面设计?我认为连续检查滚动按钮是否被按下是没有意义的。我正在使用actionscript 2,但想法可以用你想要的任何语言。我想就设计这个最佳方式提出一些意见。我不认为有某种我不知道的'waitForButtonPress'函数?

+0

可能希望查看actionscript 2中的事件:http://www.bigroom.co.uk/blog/events-in-actionscript-2 – gn22 2009-10-29 01:53:06

回答

1

我想我找到了我喜欢的解决方案。 游戏主类将有一个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

根据游戏的不同,如果你有N匝和所有其他依次是人类转,那么你可以从内循环使用,如果别人的只需拨打一个getUserResponse()..

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

,如果有任何在有条件的情况下检查他们。

+0

这不会真正起作用,因为可能有任何数量的人或电脑玩家以任何顺序。我主要关心的是如何等待循环内的用户按钮按下或产生类似的工作流程。 – Everett 2009-10-29 02:03:34

+0

啊,是的。对我来说,想法是将过程放在一个线程中,并检查一个链接到按钮的标志,就像一个布尔标志一样简单。不知道这是可能的行动脚本。 – jr3 2009-10-29 02:13:22