2015-11-14 5 views
0

Я пытаюсь создать игру угадывания страны, однако у меня возникла проблема. Я хочу, чтобы там было меню, в котором отображается страна, а внизу должны быть три столицы, из которых один из них правильный. Проблема в том, что я не хочу, чтобы правильный ответ находился на одной позиции для каждой страны, другими словами, я хочу, чтобы порядок альтернатив был рандомизирован, но я не уверен, как это можно сделать ...Java: Угадающая игра со случайным выбором порядка

Я не пришел далеко с моим кодом, но вот мой метод:

public static void gissaStadAlt(LandStad[] list) { 

     for(int i = 0; i < list.length; i++) { 
      int rand = (int)(Math.random() * 10); 
      JOptionPane.showInputDialog(null, "Which of the alternatives is the capital in " + list[i].land + "?" + "\n" + 
             "1." + list[rand].stad + "\n" + 
             "2." + list[i].stad + "\n" + 
             "3." + list[rand].stad); 
    } 


} 

Я хочу позицию списка [я] .stad быть рандомизированное

Это мой класс LandStad:

public class LandStad { 

    String land; 
    String stad; 
} 
+1

Пожалуйста, добавьте код, который у вас есть. Также вы не можете использовать генератор случайных чисел. – WIR3D

+1

Если вы используете список для хранения своих альтернатив, вы можете просто вызвать метод тасования в списке. – Gavin

+0

Ваш код не заполнен. Что такое 'LandStad'? Где требуется импорт? Где ваша декларация вашего класса? См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). – Jubobs

ответ

0

Вы можете использовать что-то вроде:

public static void gissaStadAlt(LandStad[] list) { 

    for(int i = 0; i < list.length; i++) { 
     String[] options = new String[3]; 
     int rand = i; 
     while(rand!=i){ 
      rand = (int)(Math.random() * 10); 
     } 
     options[0] = list[rand].city; 
     int k = rand; 
     while(rand!=i && rand!=k){ 
      rand = (int)(Math.random() * 10); 
     } 
     options[1] = list[rand].city; 
     options[2] = list[i].city; 
     int[] randomize = {123,132,213,231,312,321}; 
     int num = randomize[(int)(Math.random() * 6)]; 
     for(int i=0;i<3;i++){ 
      int g = num/100; 
      options[i] = g + ". " + options[i]; 
      num%=100; 
      num*=10; 
     } 
     Arrays.sort(options); 
     JOptionPane.showInputDialog(null, "Which of the alternatives is the capital in " + list[i].land + "?" + "\n" + 
            options[0] + "\n" + 
            options[1] + "\n" + 
            options[2]); 

}

1

Почему не просто перетасовать массив, который вы получите? Таким образом, вы можете поддерживать диалог JOptionPane одинаковым, то есть:

public static void gissaStadAlt(LandStad[] list) 
{ 
Collections.shuffle(Arrays.asList(list)); 
JOptionPane.showInputDialog(null, "Which of the alternatives is the 
          capital in " + list.getLand() + "?" + "\n" + 
          "1." + list[0].city + "\n" + 
          "2." + list[1].city + "\n" + 
          "3." + list[2].city); 
} 
Смежные вопросы