2017-03-11 54 views
0

我做了一個離線問答遊戲,在其中向用戶提出10個隨機問題。這些問題來自我的firebase db並保存在一個數組列表中。我的程序每次從數組列表中隨機選擇一個問題並顯示問題。這是我的一段代碼Android Studio,將離線遊戲轉換爲在線

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. 

這是我的問題。

  1. 我讀到我應該使用谷歌播放服務在線製作遊戲。有更好的方法嗎?什麼是最好的開始(鏈接將不勝感激)
  2. 我可以在我的在線遊戲中使用此活動還是應該更改它?兩個用戶的隨機性是否相同?我想問他們同樣的問題。
+0

請限制自己對每個帖子的單個問題。我回答了你下面最具體的問題。 –

回答

0

這兩個用戶的隨機性是否相同?

Android documentation on the Random class

如果Random兩個實例使用相同的種子創建,並且方法相同的調用序列由對於每個,它們將生成並返回的數字相同的序列。

因此,只要確保你創建Random對象與初始化是球員之間的相同:

Random rnd=new Random(42); 

爲了增加遊戲可玩性的,你可以用種子不斷變化 - 丁 - 隨機數發生器可預測的價值。例如:實施每日遊戲的simlpe方式是使用當天的哈希碼對其進行播種:

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());