0
次の質問は、「10のうち10」にランダムであれば、その後始まる質問は「10のうち4」である私は、10個の質問を得たので、ゲームが開始すると、例えば、ゲームは終了する。私が欲しいのは、ランダムに10点の質問です:ユニティ3Dクイズゲームランダム質問
private int idMode;
public Text question;
public Text answerA;
public Text answerB;
public Text answerC;
public Text answerD;
public Text infoAnswer;
public Text stat;
public string[] questions;
public string[] alternativeA;
public string[] alternativeB;
public string[] alternativeC;
public string[] alternativeD;
public string[] correct;
private int idQuestion;
private float points;
private float fact;
private float average;
private int results;
void Start() {
idMode = PlayerPrefs.GetInt ("idMode");
idQuestion = 0;
fact = questions.Length;
question.text = questions [idQuestion];
answerA.text = alternativeA [idQuestion];
answerB.text = alternativeB [idQuestion];
answerC.text = alternativeC [idQuestion];
answerD.text = alternativeD [idQuestion];
infoAnswer.text = (idQuestion + 1).ToString() + " of " + fact.ToString() + "";
}
public void answer(string alternative)
{
if (alternative == "A") {
if (alternativeA [idQuestion] == correct [idQuestion]) {
points += 1;
} else {
}
}
if (alternative == "B") {
if (alternativeB [idQuestion] == correct [idQuestion]) {
points += 1;
} else {
}
}
if (alternative == "C") {
if (alternativeC [idQuestion] == correct [idQuestion]) {
points += 1;
} else {
}
}
if (alternative == "D") {
if (alternativeD [idQuestion] == correct [idQuestion]) {
points += 1;
} else {
}
}
nextQuestion();
}
void nextQuestion()
{
idQuestion += Random.Range(0,10);
if(idQuestion <= (fact-1))
{
question.text = questions [idQuestion];
answerA.text = alternativeA [idQuestion];
answerB.text = alternativeB [idQuestion];
answerC.text = alternativeC [idQuestion];
answerD.text = alternativeD [idQuestion];
stat.text = " Correct: " + points.ToString() + "";
infoAnswer.text = (idQuestion + 1).ToString() + " of " + fact.ToString() + "";
}
else
{
average = 10 * (points/fact);
results = Mathf.RoundToInt (average);
if (results > PlayerPrefs.GetInt ("results" + idMode.ToString())) {
PlayerPrefs.SetInt ("results" + idMode.ToString(), results);
PlayerPrefs.SetInt ("points" + idMode.ToString(), (int)points);
}
PlayerPrefs.SetInt ("resultsTemp" + idMode.ToString(), results);
PlayerPrefs.SetInt ("pointsTemp" + idMode.ToString(), (int)points);
Application.LoadLevel("results");
}
}
}
本当に私のデータ構造を変更する必要がありますか?他の方法はありませんか? – Magillanica
他の方法もありますが、データ構造を変更するのが最も簡単な方法です。別のオプションは、 'questionMapper'と呼ばれる' int'の配列を0から数えてシャッフルすることです。次に、あなたは 'questions [questionMapper [idQuestion]]'のようなことをします。 –
新しいデータ構造を試してみてください。まだテキストをエディタに置くことができます。また私の最新のアップデートを見て、私は 'Question'クラスのメンバーに' public'を置くのを忘れました。 –