【发布时间】:2013-05-09 23:11:08
【问题描述】:
在等待按下按钮时,如何让循环暂时暂停?我找了好久,好像没找到,想来这里试试。
编辑-
我正在创建一个二十一点游戏,我添加了一个带有按钮、HITME 和 STAND 的 gui,一旦游戏到达循环中我需要让玩家输入到 HITME 或 STAND 的点我添加了按钮来执行那个,但我不知道如何暂停循环以检查按钮是否被按下,以及继续哪个按钮。
我试过的是这样的:
(othercode)
g.printPlayerCards(p1);
g.totalworth(p1);
thing.messagetop("Your total card amount is: " + p1.getTotalWorth());
thing.messagetop("Hit me? or stay?");
thing.waitonbutton();
public void waitonbutton(){
wantingtobeclick = 1;
do{
while(!(hitme == 0)){
hitme = 0;
wantingtobeclick =0;
}
}while(wantingtobeclick == 1);
}
public void actionPerformed(ActionEvent e) {
if(wantingtobeclick == 1){
if (e.getSource() == HitMe){
hitme = 1;
System.out.println("ICLICKEDHITME");
g.hitMe(player1);
waitonbutton();
}
if(e.getSource() == Stand){
hitme = 1;
g.changestandhit();
}
}
}
它只是停留在一个无限循环中,不会继续在 main 中循环。
【问题讨论】:
-
你试过什么?你能展示一些代码吗?你为什么要这么做?
-
“循环”一般只用于实时游戏。如果使用 UI 工具包,请编写对事件做出反应的代码(对于 MVM,规则是不同的,但是..)。也就是说,做A,等待按钮,做B。(但标题*非常令人困惑,因为它是关于按下in Java的按钮?这个Java和Python如何交互/相关?)
-
反应事件。不要让游戏由提示输入的循环驱动,而是让游戏响应输入。如果您确实想保持循环驱动的方法,请查看“模态对话框”。
-
为了详细说明 user224 对循环的评论,您的 GUI 框架已经有一个用于调度事件的循环(这就是它执行 actionPerformed 的方式)。所以你通常不会有自己的循环,而只是让一切都是事件驱动的。
-
如果您真的需要使用循环,您可能需要阅读线程管理 API,因为您将拥有一个线程,您的按钮处理程序正在运行,即 GUI 线程,然后在另一个线程上循环。