0

我目前正在制作一个问答游戏。我设法将游戏设置如下 -

  1. 用户单击开始按钮。

  2. 从这里这将打开一个文本文件并检索每个问题并将它们保存到一个字符串中。

  3. 然后它将这些字符串添加到 Arraylist。

  4. 然后我将数组的第一个元素显示到标签(这是第一个问题)。

  5. 从这里我设法制作了一个方法来检查标签文本并将 4 个按钮的文本设置为 4 个不同的按钮。

  6. 如果用户选择了正确的答案,它会将 +1 添加到分数整数,然后移动到下一个question(askQues2();)。如果用户选择了错误的答案,它就会继续下一个question(askQues2();)

  7. 一旦它开始下一个问题(askQues2();),它就会改变我告诉它的所有值。LabelQuestion 和4 个不同的答案按钮。

  8. 如果用户选择了正确的答案,它会将 +1 添加到分数整数,然后移动到下一个question(askQues3();)

这就是问题所在

当我在第二个问题中选择答案时,它不会运行第三个问题方法。

代码

   public void askQues1 (){
       String askQues1 = questions.get(0);
       LabelQuestion.setText(askQues1);
       ButAnsA.setText("Gillard");
       ButAnsB.setText("Howard");
       ButAnsC.setText("Rudd");
       ButAnsD.setText("Abbott");

       ButAnsA.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){
           Score += 1;             
           askQues2();
       }   
       });
       ButAnsB.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){           
           askQues2();
       }   
       });
       ButAnsC.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){           
           askQues2();
       }   
       });
       ButAnsD.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){            
           askQues2();
       }   
       });


   }
   public void askQues2(){
       String askQues2 = questions.get(1);
       LabelQuestion.setText(askQues2);
       ButAnsA.setText("1999");
       ButAnsB.setText("2004");
       ButAnsC.setText("2007");
       ButAnsD.setText("2010");  

       ButAnsA.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){              
           askQues3();
       }   
       });
       ButAnsA.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){              
           askQues3();
       }   
       });
       ButAnsA.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){              
           askQues3();
       }   
       });
       ButAnsA.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent a){
           Score += 1;
           askQues3();
       }   
       });
   }
   public void askQues3(){
       String askQues3 = questions.get(2);
       LabelQuestion.setText(askQues3);
       ButAnsA.setText("Broncos");
       ButAnsB.setText("Knights");
       ButAnsC.setText("Storm");
       ButAnsD.setText("Dragons");                                              
   }

我可以说它没有加载第三种方法,因为问题标签或答案按钮发生了变化。

我尝试了在互联网上找到的多种选择。他们都没有解决这个问题。

如果您需要更多信息。请告诉我。就像我说的那样,这是我第一次发布问题,所以我不熟悉标准。

谢谢。

4

2 回答 2

0

您的 askQues2() 方法将动作侦听器添加到 ButAnsA 4 次,并且没有向其他按钮添加新侦听器。

您似乎在每次通话时都向相同的按钮添加新的侦听器,这通常不是最佳的。既然您说您正在从文件中读取问题和可能的答案,那么您最好在文件中包含正确答案并为所有按钮设置一个侦听器。

伪代码:

doAction(ActionEvent e)
  int buttoncode=0
  switch (e.getSource())
    case ButAnsA:buttoncode=1;
    case ButAnsB:buttoncode=2;
    case ButAnsC:buttoncode=3;
    case ButAnsD:buttoncode=4;
  if (questions.get(questnum).rightAnswer == buttoncode)
    score++;
  questnum++
  updateQuestionText()
  updateButtonText()
于 2013-04-14T05:56:16.740 回答
0

您正在添加actionListener按钮。从您的问题来看,我认为一个按钮不能检测到超过 2 个动作。

尝试将 an 设置onClickListener()为按钮。

代码:

ButAnsA.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            askQues3();
        }
      });

adding注意:和setting听众之间是有区别的。setting每次听者,你只是替换前一个。但是通过adding侦听器,您正在增加特定小部件上的侦听器数量。

于 2013-04-14T06:27:17.957 回答