2016-07-18 3 views
-1

잘 작동하는 퀴즈 게임을 만들고 있는데 문제가 발생하면 사용자가 정답을 선택할 때마다 오답이라고 표시됩니다. , 한편 정답입니다, 정답이 올바른 위치에 있지 않습니다.정답의 위치에 정확한 대답을 표시하려면 어떻게해야합니까?

여기까지 내 코드입니다, 어떤 아이디어가이 문제를 해결할 수 있습니다.

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)); 
     } 
+0

이 코드를 줄이면 [mcve]를 표시하고 카운터 및 위치 변수를 사용하여 수행하려는 작업의 논리를 설명 할 수 있다면 좋을 것입니다. –

+0

네,하지만 완전하지 않거나 검증 할 수는 없습니다. –

답변

0

onCreate 메소드가 누락 되었습니까 ??

어쨌든 correctAnswer 다음에 잘못된 options을 추가하는 것이 좋습니다. 기본적으로 난수와 while 루프는 잊어 버리십시오.

다음으로 Collections.shuffle() 목록입니다.

그런 다음 목록에서 정답의 위치를 ​​검색하십시오.

+0

코드를 지금 다시 편집했습니다. 이제는 – Tunjixy

+0

에 대해 어떻게 완료 또는 검증 할 수 있습니까? – Tunjixy

관련 문제