所以我的代码在我的游戏的开始按钮处理程序中以这种方式启动。目标是使用随机按钮进行选择,然后单击这些随机按钮并打印出单击按钮进入控制台的次数。但我不知道该怎么做。到目前为止,这是我的代码:
我的开始按钮类:
package code;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class StartButton implements ActionListener{
int clickCounter;
private JFrame _j;
public StartButton(JFrame frame){
_j = frame;
}
public void actionPerformed (ActionEvent e) {
JFrame frame2 = new JFrame("ABC");
frame2.setVisible(true);
frame2.setSize(200,200);
frame2.setLocationRelativeTo(null);
JLabel label = new JLabel("Game");
JPanel panel = new JPanel();
frame2.add(panel);
panel.add(label);
_j.setVisible(false); //This creates a new game frame
JButton button = new JButton("A");
panel.add(button);
JButton button1 = new JButton("B");
panel.add(button1);
JButton button2 = new JButton("C");
panel.add(button2);
ButtonHandler b;
b = new ButtonHandler (button, button1, button2);
button.addActionListener(b);
button1.addActionListener(b);
button2.addActionListener(b);
Random r = new Random();
int x = r.nextInt(3);
if (x==0) {button.setEnabled(true); button1.setEnabled(false); button2.setEnabled(false);}
if (x==1) {button1.setEnabled(true); button.setEnabled(false); button2.setEnabled(false);}
if (x==2) {button2.setEnabled(true); button.setEnabled(false); button1.setEnabled(false);}
Timer t = new Timer (10000, null);
t.addActionListener(new GameCloser());
t.start();
}
}
My ButtonHandler Class :
package code;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
public class ButtonHandler implements ActionListener {
private JButton _b1;
private JButton _b2;
private JButton _b3;
public ButtonHandler(JButton button, JButton button1, JButton button2){
_b1 = button;
_b2=button1;
_b3=button2;
}
@Override
public void actionPerformed(ActionEvent arg0) {
Random r = new Random();
int x = r.nextInt(3);
if (x==0) {_b1.setEnabled(true); _b2.setEnabled(false); _b3.setEnabled(false);}
if (x==1) {_b2.setEnabled(true); _b1.setEnabled(false); _b3.setEnabled(false);}
if (x==2) {_b3.setEnabled(true); _b1.setEnabled(false); _b2.setEnabled(false);}
}
}
ANd here is my my class for closing the game:
package code;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class GameCloser implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Congrats, you clicked it "+" times");
System.exit(0);
我如何适应一个计数器:( ??
答案 0 :(得分:0)
将点击次数存储在ButtonHandler private int字段中。 然后将ButtonHandler添加到GameCloser
public class GameCloser implements ActionListener {
private final ButtonHandler buttonHandler;
public GameCloser(ButtonHandler buttonHandler){
this.buttonHandler = buttonHalder;
}
@Override
public void actionPerformed(ActionEvent e) {
int clickTimes = buttonHandler.getClickTimes();
System.out.println("Congrats, you clicked it "+" times");
System.exit(0);
更新
public class ButtonHandler implements ActionListener {
private JButton _b1;
private JButton _b2;
private JButton _b3;
/*The click counter <----*/
private int clickCounter = 0;
public ButtonHandler(JButton button, JButton button1, JButton button2){
_b1 = button;
_b2=button1;
_b3=button2;
}
@Override
public void actionPerformed(ActionEvent arg0) {
Random r = new Random();
int x = r.nextInt(3);
clickCounter++;//Increment click counter <---
if (x==0) {_b1.setEnabled(true); _b2.setEnabled(false); _b3.setEnabled(false);}
if (x==1) {_b2.setEnabled(true); _b1.setEnabled(false); _b3.setEnabled(false);}
if (x==2) {_b3.setEnabled(true); _b1.setEnabled(false); _b2.setEnabled(false);}
}
/* returns the number of clicks */
public int getClickTimes(){
return clickCounter;
}
}