2013-03-04 3 views
0

간단한 퀴즈 게임을 만들고 있습니다. 이 게임에서는 질문과 답변이 무작위로 생성됩니다. 질문에 "q" 목록을 만들었습니다.android : 퀴즈 게임에서 임의의 질문과 답변으로 올바른 답변 목록을 얻으려면 어떻게해야합니까?

그리고 답을 위해 필자는 각각 4 개의 문자열로 다양한 목록을 만들었습니다. 예를 들어 질문이 q 목록의 0 인 경우이 질문에 대한 대답은 "a0" 목록에 있습니다. 맞습니까? 하지만 답변 목록에 문자열을 가져 오는 데 문제가 있습니다. 나는 이것을 시도했다 :

while(true){ 

      Integer nxt = rng.nextInt(6); 

      if (!generated.contains(nxt)) 
      { 
       generated.add(nxt); 

       textView1.setText(((ArrayList<String>) q).get(nxt)); 

       String x; 
       x = ("a" +nxt); 

       Collections.shuffle((x)); 

       btn1.setText(((ArrayList<String>) x).get(0)); 
       btn2.setText(((ArrayList<String>) x).get(1)); 
       btn3.setText(((ArrayList<String>) x).get(2)); 
       btn4.setText(((ArrayList<String>) x).get(3)); 


       break; 
      } 
    } 

내가 바로 목록을 가져을 "X"문자열 를 만들었습니다. "nxt"이 4이면 버튼 텍스트는 목록 a4에있는 문자열을 가져옵니다.

하지만 내 코드에서

"Collections.shuffle""의 setText" 목록 "X"를 찾아보십시오. 상상했던 방식대로 진행되지 않습니다.

어떻게 해결할 수 있습니까?

* 내 아이디어는 클릭 한 문자열을 확인하고 다른 올바른 답변 목록과 비교하는 것입니다. 그런 식으로 나는 정답과 다른 잘못을 돌릴 수 있습니다.

+0

첫째,'x' 그것이'String'의, 목록이 아니다. 아마도 당신은'q'를 뜻했을 것입니다; 그것은 이전에리스트로 사용 되었습니까? 질문에 대한 답변은 –

+0

임의의 답변입니까? 또는 무작위로 선택된 질문을 포함 할 수 있습니다. 각각의 질문에는 자체 무작위 응답 집합이 있습니까? 만약 그들이 무작위 응답이라면, 그들 중 누구라도 실제로 그 질문에 대답 할 수 있는지 어떻게 확신 할 수 있습니까? –

+0

https://play.google.com/store/apps/details?id=com.troubi.kingofmath – poitroae

답변

0

이 코드가 올바르게 컴파일되거나 실행되면 놀랄 것입니다. 변수 이름으로 String의 내용을 사용하고 해당 변수를 ArrayList<String>으로 캐스팅 한 다음 요소에 액세스하려고합니다. 많은 수준에서 이것은 잘못된 것이므로 몇 가지 Java 자습서를 다시 고려해야합니다.

어쨌든 계속할 수 있다고 생각하는 경우 다음 방법을 시도해보십시오. 질문과 답변을 별도의 목록에 저장하지 말고 한 클래스에 저장해야합니다.

class Question 
{ 
    //... 
    // maybe id and other stuff belonging to a question 
    //... 

    String questionText; 

    // separate because you need to tell the correct answer apart from the wrong ones later 
    // you could also just always use the first one in a set of answers. 
    String correctAnswerText; 
    ArrayList<String> wrongAnswerTexts; 
} 

그런 다음 앱에 ArrayList<Question>에서 귀하의 질문에 저장하고 다음과 같이 대답을 설정할 수 있습니다 모든

//... 
// set up ArrayList<Question> questions here 
//... 

int nxt = rng.nextInt(6); 

//...  
// make sure your list is actually long enough for the generated index 
//... 

Question nextQuestion = questions.get(nxt); 

//...  
// make sure the retrieved object is valid 
//...  
// set the question text to nextQuestion.questionText; 
//... 

ArrayList<String> allAnswers = new ArrayList<String>(); 
allAnswers.add(nextQuestion.correctAnswerText); 
allAnswers.addAll(nextQuestion.wrongAnswerTexts); 

Collections.shuffle(allAnswers); 

btn1.setText(allAnswers.get(0)); 
btn2.setText(allAnswers.get(1)); 
btn3.setText(allAnswers.get(2)); 
btn4.setText(allAnswers.get(3)); 
+0

팁 주셔서 감사합니다! 저는 Java 프로그래밍에 익숙하지 않으며 튜토리얼을 한 단계 씩 진행할 시간이 없지만이를 시도 할 것입니다. 내가 응용 프로그램에서 귀하의 도움말을 사용하고, 일부 자습서를 보면서 몇 가지 개념을 이해하고, 이제 응용 프로그램이 잘 작동합니다. 감사합니다. –

+0

문제 없음, 도와 드리겠습니다. ;-) – Thrakbad

1

나는 며칠 전에 similar quiz app (King of Math)을 만들었습니다.

  1. 목록 셔플, 정답을
  2. 계산 가짜 답변
  3. 당신에 대한 정답 추가 답변을-목록을 계산 답변 목록
  4. 에 추가
  5. 정답은 id입니다. 그것은 응답이 선택되어있는 경우, 범위 [0, max_answers)

에, 사용자가 선택하는 경우, 선택된 번호 (0, 1, 2, 3) 정답의 하나이다. 그렇다면 사용자가 올바른 것을 선택하고, 그렇지 않으면 그는 선택하지 않습니다.

추 신 : 죄송합니다.

+1

Ok. 재미있는 앱으로 보인다. 내 아이디어는 당신과 비슷하지만 답변 목록에 액세스하는 데 문제가 있습니다. 어떻게 액세스 할 목록의 이름을 조작 할 수 있습니까? 그게 내가 고칠 수없는 문제 야. –

+0

@SirRoyce 런타임에 변수 이름을 조작 할 수 없다. 적어도 내가 이해 한 것입니다. 무슨 뜻인지 좀 더 자세히 설명해주십시오. – poitroae