我想在我的游戏中添加一个计数器,然后打印到控制台。

时间:2015-11-07 08:38:21

标签: java

所以我的代码在我的游戏的开始按钮处理程序中以这种方式启动。目标是使用随机按钮进行选择,然后单击这些随机按钮并打印出单击按钮进入控制台的次数。但我不知道该怎么做。到目前为止,这是我的代码:

我的开始按钮类:

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);

我如何适应一个计数器:( ??

1 个答案:

答案 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;
     }

    }