记忆游戏没有正确调用比较功能

时间:2015-12-13 15:31:07

标签: java arrays compare bluej

我编写了一个简单的记忆游戏。将卡值添加到两个数组中,然后调用比较函数。但是比较函数的逻辑存在问题。

具体问题似乎与在第三次按钮点击时调用compare函数有关。因此,在第一次单击时,它将第一个值添加到第一个数组,第二个单击第二个值到第二个数组。但我必须第三次点击调用比较函数来比较两个数组的匹配。

主要问题是,在所有牌被倒置后(5x4记忆游戏中的10场比赛),它不会显示结果。

我已在此处上传完整代码:http://uloz.to/xcsJkYUK/memory-game-rar

public class PEXESO5x4 extends JFrame implements ActionListener {

    private JButton[] aHracieTlactika = new JButton[20];
    private ArrayList<Integer> aHodnoty = new ArrayList<Integer>();
    private int aPocitadlo = 1;
    private int[] aTlacitkoIden = new int[2];
    private int[] aHodnotaTlac = new int[2];
    private JButton aTlacitkoExit;
    private JButton aTlacitkoReplay;
    private JButton[] aHracieTlacitko = new JButton[20];
    private int aPocetTahov = 0;

    public void vkladanieHodnot() {

        for (int i = 0; i < 2; i++) {

            for (int j = 1; j < (this.aHracieTlactika.length / 2) + 1; j++) {
                this.aHodnoty.add(j);
            }

        }
        Collections.shuffle(this.aHodnoty);
    }

    public boolean zhoda() {
        if (this.aHodnotaTlac[0] == this.aHodnotaTlac[1]) {
            return true;

        }
        return false;
    } 
    public  void zapisCislaDoSuboru() {
       try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("Semestralka.txt", true)))) {
      out.println("haha");
    //more code
    out.println("hahahahha");
    //more code
    }catch (IOException e) {
    //exception handling left as an exercise for the reader
     }
    }

    public void actionPerformed(ActionEvent e) {
     int match = 0;

      if (this.aTlacitkoExit == e.getSource()) {

            System.exit(0);

        }

      if (this.aTlacitkoReplay == e.getSource()) {
        }
        for (int i = 0; i < this.aHracieTlactika.length; i++) {

            if (this.aHracieTlactika[i] == e.getSource()) {
                this.aHracieTlactika[i].setText("" + this.aHodnoty.get(i));
                this.aHracieTlactika[i].setEnabled(false);
                this.aPocitadlo++;

                this.aPocetTahov += 1;

                if (this.aPocitadlo == 3) {

                    if (this.zhoda()) {

                        match+=1;
                        if (match==10)
                        {
                            System.out.println("You win");
                        }

  this.aHracieTlactika[this.aTlacitkoIden[0]].setEnabled(false);
                        this.aHracieTlactika[this.aTlacitkoIden[1]].setEnabled(false);

                    } else {
        this.aHracieTlactika[this.aTlacitkoIden[0]].setEnabled(true);
                        this.aHracieTlactika[this.aTlacitkoIden[0]].setText("");
                        this.aHracieTlactika[this.aTlacitkoIden[1]].setEnabled(true);
                        this.aHracieTlactika[this.aTlacitkoIden[1]].setText("");                     
                    }
                    this.aPocitadlo = 1;    
                }
                 if (this.aPocitadlo == 1) {
                    this.aTlacitkoIden[0] = i;
                    this.aHodnotaTlac[0] = this.aHodnoty.get(i);
                }
                if (this.aPocitadlo == 2) {
                    this.aTlacitkoIden[1] = i;
                    this.aHodnotaTlac[1] = this.aHodnoty.get(i);  
                }          
        }     
    }   
    }
}

0 个答案:

没有答案