2017-03-11 1 views
0

Ich machte ein Offline-Quiz-Spiel, in dem ich 10 zufällige Fragen an den Benutzer stelle. Diese Fragen werden von meinem firebase db genommen und in einer arraylist gehalten. Mein Programm wählt jedes Mal eine zufällige Frage von der Arraylist und zeigt die Frage an. Hier ist ein Stück meines CodesAndroid Studio, ein Offline-Spiel in Online umwandeln

public void askQuestion(){ 
     Random rnd=new Random(); 
     int index = rnd.nextInt(questionList.size()); 
     Info theQuestion=questionList.get(index); 
     question.setText(theQuestion.getQuestion()); 
     a.setText(theQuestion.getA()); 
     b.setText(theQuestion.getB()); 
     c.setText(theQuestion.getC()); 
     d.setText(theQuestion.getD()); 
     answer=theQuestion.getAnswer(); 
    } 
//Info is the name of the object for my questions. questionList is an arraylist of type info where I keep the all questions I got from firebase. 

Hier ist mein Problem (s).

  1. Ich habe gelesen, dass ich Google Play-Dienste verwenden sollte, um ein Spiel online zu machen. Gibt es einen besseren Ansatz? Was ist der beste Ort zum Starten (ein Link wäre wünschenswert)
  2. Kann ich diese Aktivität in meinem Online-Spiel verwenden oder sollte ich es ändern? Wird die Zufälligkeit bei beiden Benutzern gleich sein? Ich möchte ihnen die gleichen Fragen stellen.
+0

Bitte beschränken auf eine einzige Frage per Post selbst: ein simlpe Weise ein Spiel-of-the-Tag ist auf Saatgut mit dem Hash-Code des Tages zu implementieren. Ich habe unten Ihre konkreteste Frage beantwortet. –

Antwort

0

Wird Zufälligkeit in beide Benutzer gleich sein?

Vom Android documentation on the Random class:

Wenn zwei Instanzen von Random mit dem gleichen Samen erzeugt werden, und die gleiche Folge von Methodenaufrufen für jeden gemacht wird, werden sie erzeugen und identische Sequenzen von Zahlen zurück.

Also nur sicherstellen, dass Sie Ihr Random Objekt mit einem Initialisierer erstellen, die denselben zwischen den Spielern ist:

Random rnd=new Random(42); 

Wiederspielwert des Spiels zu erhöhen, können Sie die randomizer mit einem Wechsel-aber- Samen könnten vorhersagbarer Wert. Zum Beispiel:

Calendar c = new GregorianCalendar(); // see http://stackoverflow.com/q/6850874 
c.set(Calendar.HOUR_OF_DAY, 0); //anything 0 - 23 
c.set(Calendar.MINUTE, 0); 
c.set(Calendar.SECOND, 0); 
c.set(Calendar.SECOND, 0); 
c.set(Calendar.MILLISECOND, 0); 
Date day = c.getTime(); //the midnight, that's the first second of the day. 
Random rnd=new Random(day.hashCode()); 
Verwandte Themen