如何在正确答案的位置显示正确的答案

时间:2016-07-18 00:15:28

标签: android

我正在创建一个工作正常的问答游戏,但遇到的问题是每当用户选择正确答案时,它会将其显示为错误答案,同时它是正确答案,它是'结果证明正确的答案不在正确的位置。

到目前为止,这是我的代码,任何想法如何解决这个问题。

public class RiddleGuessActivity extends AppCompatActivity {
        TextView riddleQuestionTextView;
        Button btn1, btn2, btn3, btn4, btnContinue, btnOk;

        ArrayList<String> riddles = new ArrayList<>();
        ArrayList<String> answers = new ArrayList<>();
        int locationOfCorrectAnswers = 0,incorrectAnswers = 0;
        ArrayList<String> options = new ArrayList<>();
        LinearLayout gameOverLayout;
        LinearLayout buttonLayout;
        RelativeLayout resultLayout;
        TextView timerTextView;
        TextView answerTextView;
        TextView levelTextView, scoreTextView;
        TextView gameOverTextView;
        int levelCounter = 1, scoreCounter, riddleCounter = 0;

        public void chosenRiddle (View view) {

            if (view.getTag().toString().equals(Integer.toString(locationOfCorrectAnswers))) {

                //Toast.makeText(RiddleGuessActivity.this, "Correct", Toast.LENGTH_SHORT).show();
                levelCounter++;
                scoreCounter+=60;
                riddleCounter++;
                levelTextView.setText(String.valueOf(levelCounter));
                scoreTextView.setText(String.valueOf(scoreCounter));

                result();

            }else {

                Toast.makeText(RiddleGuessActivity.this, "Wrong, It was " +
                        answers.get(riddleCounter), Toast.LENGTH_SHORT).show();
                gameOver();
            }
        }

        public void generateRiddles () {

            riddles.add("I kiss my mother before i die. What am i ?");
            riddles.add("It is greater than God and more evil than the devil. The poor have it, the rich need it and if you eat it you'll die. What am i ?");
            riddles.add("It walks on four legs in the morning, two legs at noon and three legs in the evening. What am i ?");
            riddles.add("I am the beginning of the end, and the end of time and space. I am essential to creation and i surround everyplace. What am i ?");
            riddles.add("What always runs but never walks, often murmurs, never talks, has a bed but never sleeps, has a mouth but never eats. What am i ?");
            riddles.add("At night they come without being fetched, By day they are lost without being stolen. What am i ?");
            riddles.add("The one who makes it, sells it. The one who buys it, never uses it. The one that uses it never knows that he's using it. What am i ?");
            riddles.add("The more you have of it, the less you see. What am i ?");
            riddles.add("I am always hungry, i must be fed, the finger i touch will soon turn red. What am i ?");
            riddles.add("If you break me, i do not stop working, if you touch me, i may snared, if you lose me, nothing will matter. What am i ?");

            answers.add("Matches");
            answers.add("Nothing");
            answers.add("Man");
            answers.add("Letter E");
            answers.add("River");
            answers.add("The Stars");
            answers.add("A Coffin");
            answers.add("Darkness");
            answers.add("Fire");
            answers.add("Heart");
            answers.add("The Moon");
            answers.add("Food");
            answers.add("Love");
            answers.add("Mouth");
            answers.add("Money");

            Random random = new Random();

            riddleQuestionTextView.setText(riddles.get(riddleCounter));

            locationOfCorrectAnswers = random.nextInt(4);

            options.clear();

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

                if (i == locationOfCorrectAnswers &&
                        !options.contains(answers.get(riddleCounter))) {

                    options.add(answers.get(riddleCounter));

                }else {

                    incorrectAnswers = random.nextInt(answers.size());

                    while (incorrectAnswers == riddleCounter) {

                        incorrectAnswers = random.nextInt(answers.size());
                    }

                    if(!options.contains(answers.get(incorrectAnswers)))
                        options.add(answers.get(incorrectAnswers));
                    else --i;

                }

            }

            btn1.setText(options.get(0));
            btn2.setText(options.get(1));
            btn3.setText(options.get(2));
            btn4.setText(options.get(3));
        }

1 个答案:

答案 0 :(得分:0)

你错过了onCreate方法吗?

无论如何,我建议您添加correctAnswer后跟不正确的options。基本上,忘记随机数和while循环。

然后Collections.shuffle()列表。

然后扫描列表以获取正确答案的位置。