我目前正在创建一款教育游戏,以帮助人们学习数学,但却遇到了问题。
我在一些立方体中随机化文本,玩家点击它来测试他们的倍数知识,但是我现在使用的代码使它偶尔在屏幕上没有正确的答案,有没有办法我能解决这个问题吗?
代码:
按钮
using UnityEngine;
using System.Collections;
public class RNG : MonoBehaviour
{
public GUIText thisAnswer;
public RandomiseAll reRoll;
int randomNumber = 0;
int miniScore = 0;
// Use this for initialization
void Awake ()
{
randomNumber = Random.Range (0, 36);
thisAnswer.text = randomNumber.ToString ();
}
void OnMouseUpAsButton ()
{
if (randomNumber % 3 == 0) {
miniScore += 100;
reRoll.Randomise ();
Debug.Log (miniScore.ToString ());
} else if (randomNumber % 3 != 0) {
reRoll.Randomise ();
Debug.Log (miniScore.ToString ());
}
}
}
全球重新随机
using UnityEngine;
using System.Collections;
public class RandomiseAll : MonoBehaviour {
public GUIText[] answer;
int randomNumber;
int[] test;
public void Randomise(){
for (int i = 0; i < answer.Length; i++) {
randomNumber = Random.Range (0, 36);
answer [i].text = randomNumber.ToString ();
}
}
}
非常感谢任何帮助。
答案 0 :(得分:4)
为什么不直接添加正确答案以及其他一些随机错误答案?
答案 1 :(得分:0)
假设GuiText []答案是您保存所有可能选项的地方,解决方案可能是在随机化后循环验证至少一个答案是否正确。
此解决方案使用LINQ。
public void Randomise(){
for (int i = 0; i < answer.Length; i++) {
randomNumber = Random.Range (0, 36);
answer [i].text = randomNumber.ToString ();
}
if (!(Answer.Any(p => (Convert.ToInt32(p)) % 3 == 0)))
Randomise();
}
没有LINQ:
public void Randomise(){
for (int i = 0; i < answer.Length; i++) {
randomNumber = Random.Range (0, 36);
answer [i].text = randomNumber.ToString ();
}
bool anyExist = false;
for (int j = 0; j < answer.Length; j++)
{
if (System.Convert.ToInt32(answer[j].text) % 3 == 0)
{
anyExist = true;
break;
}
}
if (!anyExist)
Randomise();
}