2009-10-29 76 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