【发布时间】:2016-01-14 14:22:57
【问题描述】:
我正在重新创建一个非常糟糕的 cookie clicker 版本,只是为了测试一下我的技能。好吧,我遇到了一个问题,我不知道如何每 3 秒重复一次循环。 主类代码:
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class CookieClickerGame {
private static final int FRAME_WIDTH = 200;
private static final int FRAME_HEIGHT = 200;
public static void main(String[] args) {
JPanel panel = new JPanel();
JFrame frame = new JFrame();
JButton cookie = new JButton("Cookie");
JButton grandma = new JButton("Grandma");
JButton robot = new JButton("Robot");
panel.add(cookie);
panel.add(grandma);
panel.add(robot);
frame.add(panel);
/*----------------------------------------/
/ Buttons /
/----------------------------------------*/
ActionListener listener = new CookieClicker();
cookie.addActionListener(listener);
ActionListener listener2 = new CookieClicker();
grandma.addActionListener(listener2);
ActionListener listener3 = new CookieClicker();
robot.addActionListener(listener3);
/*---------------------------------------------------------/
/ Frame /
/---------------------------------------------------------*/
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
监听代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class CookieClicker implements ActionListener {
static int cookies;
public void actionPerformed(ActionEvent event) {
if (event.getActionCommand().equals("Cookie")) {
cookies++;
System.out.print('\f');
System.out.println(cookies + " Cookies");
} else if (event.getActionCommand().equals("Grandma") && cookies >= 10) {
System.out.println("+1 Grandma | -10 Cookies");
cookies = cookies - 10;
System.out.println(cookies + " Cookies");
while (true) {
cookies = cookies + 1;
System.out.print('\f');
System.out.println(cookies + " Cookies");
Thread.sleep(3000);
}
} else if (event.getActionCommand().equals("Robot") && cookies >= 50) {
System.out.println("+1 Robot | -50 Cookies");
cookies = cookies - 50;
System.out.println(cookies + " Cookies");
cookies = cookies + 1;
System.out.print('\f');
System.out.println(cookies + " Cookies");
} else {
JOptionPane.showMessageDialog (null, "Not Enough Cookies", "You're Poor", JOptionPane.INFORMATION_MESSAGE);
}
}
}
Thread.sleep(3000) 不工作,有什么问题?
【问题讨论】:
-
定义
isn't working。 -
以 try..catch 开头
-
Thread.sleep() 很容易抛出一个必须在某处捕获的异常......谷歌是你的朋友:)
-
我知道,这有点无聊,但通常“自下而上”而不是“自上而下”学习东西更容易。含义:您应该首先了解 Java 的基本基础;在尝试解决更高级的难题之前。所以:“try/catch”是非常基础的; Swing 应用程序、线程和其他......在某种程度上更先进。换句话说:看起来你愿意建造一座摩天大楼;但你缺乏用铁锹挖地下室洞的技能……
标签: java swing while-loop sleep