我正在开发一款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
那么你的问题是什么? –