我正在開發一款4人牌遊戲。一個玩家是用戶,而另一個是電腦玩家。我開始了一個循環來獲得每個球員的卡牌。計算機玩家通過自動選擇適當的卡片來扔卡,而用戶通過點擊卡片來自動扔卡。但問題是,循環不要等待用戶選擇。如何讓用戶事件等待java應用程序
0
A
回答
0
你需要的是一個事件和一個事件監聽器。該事件將由用戶扔出一張牌而產生。事件監聽者將被分配給電腦玩家;每個聽衆將被「註冊」以聽取來自玩家的事件。太陽教程越過對此進行了詳細,這是很容易理解:
http://download.oracle.com/javase/tutorial/uiswing/events/index.html
1
有一對夫婦的方式來處理這一點。一種是讓遊戲邏輯與用戶界面分離。它會經歷這樣的循環:
while (!gameOver()) {
getPlayerMoves();
updateGameState();
notifyUI();
}
的getPlayerMoves()
方法將在每個玩家(電腦或人類是否),直到此舉可塊。電腦玩家可以在同一個線程中實現,因爲他們並不真正阻止。方法將通知UI線程遊戲狀態已經改變。一個方便的方法是使用消息隊列。
UI線程只會監聽事件並對它們做出反應。它會期待兩種事件:來自遊戲邏輯線程的通知(如上所述)和由(人類)玩家移動。當它收到遊戲狀態已更改的通知時,它將更新顯示並啓用玩家移動。當它接到玩家移動時,它將禁止該玩家的額外移動(因爲玩家不應該每回合移動兩次),發送通知到遊戲線程,並等待另一個事件。 (如果只有一個人類玩家,那麼此時唯一可能發生的事件應該是遊戲狀態更改)。
如果您使用的是Swing,那麼有幾個內置類可以極大地簡化這種通知在線程之間。看看SwingWorker課程即可開始。如果沒有,請參閱this thread以瞭解線程之間的消息方式。
相關問題
- 1. 如何讓android應用程序等待?
- 2. 如何讓java等待事件?
- 3. 如何讓java等待用戶輸入?
- 4. 讓程序等待點擊事件
- 5. 讓FEST等待應用程序加載
- 6. 等待用戶事件
- 7. 讓應用程序等待幾秒鐘Java
- 8. 如何讓GUI等待用戶輸入?
- 9. 如何使用等待或線程等待事件發生
- 10. 如何讓java等待
- 11. 我如何讓應用程序等待通知(txt,alert,ect)
- 12. 如何讓我的應用程序等待特定的時間?
- 13. 讓主線等待事件
- 14. 等待JavaFX應用程序線程完成處理事件?
- 15. 如何使組件/應用程序等待Ajax調用
- 16. 在控制檯應用程序中等待鍵盤事件
- 17. 應用程序等待事件時該怎麼辦
- 18. 如何讓Parsley遠程驗證程序等待響應?
- 19. 如何讓移動文件之前廚師等待應用程序部署?
- 20. 如何讓一個程序在java中等待一個方法
- 21. 讓用戶等待使用Swing
- 22. 如何輕鬆地讓用戶看不到Java應用程序?
- 23. 等待事件處理程序異步
- 24. 等待用戶響應
- 25. 用Selenium等待JavaScript事件
- 26. 讓Winforms應用程序等待幾分鐘後再繼續
- 27. 如何才能讓我的BlackBerry Java程序在繼續之前等待覈心應用程序打開?
- 28. 如何等待angular2中的用戶點擊事件?
- 29. 讓線程等待
- 30. 等待光標並禁用java應用程序
如果是這樣的話,讓循環等待用戶選擇。一些代碼會有所幫助。 – bragboy
那麼你的問題是什麼? –