2012-04-10 120 views
1

我正在开发一个应用程序,它是一个问题的游戏。我设法每次向不同的按钮显示每个问题的答案,但我无法检查正确的答案。我的方法是:我创建了一个额外的列到数据库,我指出正确的答案是(1,2,3或4)的列。我使用此代码在不同的按钮中显示答案。检查正确的答案

cur = dbHelper.getRandomQuestion(); 
    String corrans = cur.getString(cur.getColumnIndex("CorrectAnswer")); 
    a = Integer.parseInt(corrans); 
    String question = cur.getString(cur.getColumnIndex("QUESTIONS")); 
    String answer0 = cur.getString(cur.getColumnIndex("ANSWER1")); 
    String answer1 = cur.getString(cur.getColumnIndex("ANSWER2")); 
    String answer2 = cur.getString(cur.getColumnIndex("ANSWER3")); 
    String answer3 = cur.getString(cur.getColumnIndex("ANSWER4")); 
    txtQuest.setText(question); 

    ArrayList<String> lstAnswers = new ArrayList<String>(); 
    lstAnswers.add(answer0); 
    lstAnswers.add(answer1); 
    lstAnswers.add(answer2); 
    lstAnswers.add(answer3); 

    score.setText("Your score is " + b +","+ a); 

    Random random = new Random(); 

    int[] textViews = new int[] { R.id.button1, R.id.button2, R.id.button3, R.id.button4 }; 
    int textViewIndex = 0; 

    while (lstAnswers.size() > 0) { 
    int index = random.nextInt(lstAnswers.size()); 
    if(a == index){ b = index;} 
    else{} 
    String randomAnswer = lstAnswers.remove(index); 
    ((TextView)findViewById(textViews[textViewIndex])).setText(randomAnswer); 
    ++textViewIndex; 
            } 

对每个按钮调用来比较a和b的值,然后相应地采取行动。但它似乎没有工作。我明白为什么,但我无法弄清楚。任何帮助appeciated。

回答

2

使用Collections.shuffle(list)洗牌你的答案阵列,然后显示答案 设置一个标签为“右”到您的按钮,其前面回答是正确的,后来比较了tagvalue和DISPLY对错

编辑:下面的事情只是一个大纲

Here im displaying answers in buttons.... 

    List<Integer> intList = new ArrayList<Integer>(Arrays.asList(0,1,2,3)); 
     Collections.shuffle(intList); 

     Log.d("ERR","List after shuffling: " + intList); 
     // below answers will be assiagned randomly to buttons... 
     btn_cmpTagline[intList.get(0)].setText(answr1); 
     btn_cmpTagline[intList.get(0)].setTag("right"); 
     btn_cmpTagline[intList.get(1)].setText(answr2); 
     btn_cmpTagline[intList.get(1)].setTag("wrong"); 
     btn_cmpTagline[intList.get(2)].setText(answr3); 
     btn_cmpTagline[intList.get(2)].setTag("wrong"); 
     btn_cmpTagline[intList.get(3)].setText(answr4); 
     btn_cmpTagline[intList.get(3)].setTag("wrong"); 

//在点击

@Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
     case R.id.btn_tag1: 
      Log.d("ERR", v.getTag().toString()); 
      if(v.getTag().toString().equalsIgnoreCase("right")){ 
       //this button has right answer .. do anything 
      } 

      break; 
     case R.id.btn_tag2: 
      Log.d("ERR", v.getTag().toString()); 
      if(v.getTag().toString().equalsIgnoreCase("right")){ 
       //this button has right answer .. do anything 
      } 

      break; 
     case R.id.btn_tag3: 
      Log.d("ERR", v.getTag().toString()); 
      if(v.getTag().toString().equalsIgnoreCase("right")){ 
       //this button has right answer .. do anything 
      } 

        -- 
        -- 
     } 
+0

你可以提供一个示例代码或什么? – dothedos 2012-04-10 10:58:11

+0

看到编辑..请让我知道.. – vnshetty 2012-04-10 11:21:20

+0

什么btn_cmpTagline应该是什么? – dothedos 2012-04-10 12:02:12

0

当您从列表中删除项目时,正确答案的索引将会更改,因此您必须更新正确答案的位置。

+0

您可以通过先将正确答案分配给随机插槽并立即记录其索引来解决此问题。然后在其他地方分配其余的答案。 – Sparky 2012-04-10 09:55:44

+0

是的,我知道,但如何产生随机数字(0-3之间)。数组列表如何使用删除进行修改?可以说,索引= 2和a = 1的大小,然后将3,但我不会知道每个答案的内部位置在Arrraylist – dothedos 2012-04-10 10:02:11

+0

随机决定什么地方正确的答案应该是。从列表中删除该答案并保存。使用相同的循环,只需稍作修改即可通过答案的其余部分。当你的循环击中正确答案的随机位置时,插入正确的答案,而不是从列表中选择一个新答案。 – Heinrisch 2012-04-10 12:17:12

0

,你可以得到的权值而不是索引。那么,当您将按钮添加到按钮时,您可以检查它是否与正确的答案相同,并保留新的索引。