#はじめに
こちらの記事はCSVファイルによるクイズのデータの読み込みが前提となります。CSVファイルに関しましては以下の記事をご参照ください。
https://hakonebox.hatenablog.com/entry/2018/05/17/010407
#概要
List
とRandom.Range
を用いることでCSVファイルにあるクイズのデータをランダムに抽出、並び替えて表示します。これによりクイズゲームにおいてクイズを毎回ランダムに出題することができます。
#前提
以下のようなcsvファイルをcsvDatas
として読み込んでいます。今回はここからランダムに出題していきます!
タイトル,問題,選択肢1(答え),選択肢2,選択肢3
1,世界遺産が最も多い国は?,イタリア,フランス,中国
2,「テンパる」 はどのゲームの用語から生まれた言葉?,麻雀,囲碁,ポーカー
・・・・・・・
30,次のうちJR山手線にない駅は?,汐留,田端,目白
#スクリプト
まず、以下のように関数を定義します。
List<int> GetRandomList(){
List<int> randomList = new List<int>();
while(randomList.Count < 5){
int y = Random.Range(1,31);
if(!randomList.Contains(y)){
randomList.Add(y);
}
}
return randomList;
}
これにより、1~30の数字からランダムに5つ取り出して新たにListを作成することができるので、これを実際にListに紐づけます。
public List<int> randomQuiz;
randomQuiz = GetRandomList();
そして、この新たなListを以下のように利用してquizText
にクイズを表示させます。
quizText.text = csvDatas[randomQuiz[0]][1];
#ちょっと細かい解説
以下の部分の詳しい解説をします。興味のある方だけお読みください。
while(randomList.Count < 5){
int y = Random.Range(1,31);
if(!randomList.Contains(y)){
randomList.Add(y);
}
}
1行目はrandomList
の要素数が5個になるまで以下の処理を続けるという意味です。
2行目はRandom.Range
を利用して、1~30のうちランダムに1つの数をyに代入するという意味です。
3,4行目はもしrandomList
の要素に上で代入したyが含まれていなければ新たにyをrandomList
に追加するという意味です。3行目の条件があることで数字の被りを防止しています。
#終わりに
今回紹介したランダムな数字のListを作成する方法はクイズだけでなく様々な場面で活用することができると思います。ぜひ応用してみてください!