Я делаю сумму умножения, где int a и int b оба получают значения из random.range (1,11).и есть 4 кнопки, чтобы нажать правильный ответ.когда нажата правильная кнопка ответа, я снова вызываю функцию создателя суммы, поэтому появится следующая сумма.Моя проблема в том, что иногда я получаю тот же вопрос в следующий раз.например, в первый раз 2 X 5, и когда я снова вспоминаю создателя суммы, я получаю 2 x 5. Я попытался добавить значение b в список, а затем сравнить, если значение используется ранее, если да, то снова рандомизировать его (я пытаюсь контролироватьтолько дублирование б) Но, насколько я понимаю, я назначаю одно значение б, когда я вызываю функцию создателя суммы.Там нет петли, потому что я хочу только один вопрос за один раз.и когда я вспоминаю ту же функцию, он не помнит, какое значение использовалось ранее.Как мне решить это?пожалуйста, помогите.
void SumCreator()
{
// we do multiplication here
bool reloop;
bool[] numbers = new bool[301];
List<int> usedValues = new List<int>();
a = Random.Range(1, 11);
b = Random.Range(1, 11);
while (usedValues.Contains(b))
{
b = Random.Range(1, 11);
}
locationOfAnswer = Random.Range(0, ansButtons.Length);
answer = a * b;
numbers[answer] = true;
if (valueA != null && valueB != null)
{
valueA.text = a.ToString();
valueB.text = b.ToString();
}
// mathSymbolObject.sprite = mathSymbols[0];
for (int i = 0; i < ansButtons.Length; i++)
{
if (i == locationOfAnswer)
{
ansButtons[i].GetComponentInChildren<TextMeshProUGUI>().text = "" + answer;
}
else
{
// the below code make sure that all the values assigned to the ans button are within the range
int value = 0;
do
{
reloop = false;
if (answer <= 10)
{
value = Random.Range(0, 15);
}
else if (answer <= 30 & answer >= 11)
{
value = Random.Range(10, 45);
}
else if (answer <= 60 & answer >= 31)
{
value = Random.Range(25, 75);
}
else if (answer <= 90 & answer >= 61)
{
value = Random.Range(55, 105);
}
else if (answer <= 120 & answer >= 91)
{
value = Random.Range(85, 135);
}
if (numbers[value]) //already select?
{
reloop = true;
}
} while (reloop);
numbers[value] = true;
ansButtons[i].GetComponentInChildren<TextMeshProUGUI>().text = "" + value;
}
}//for loop
}
Кнопка Script.cs
//method whihc help us to identify if player has pressed correct or wrong answer
public void checkTheTextofButton()
{
if (gameObject.CompareTag( MathsAndAnswerScript.instance.tagOfButton))
{
// do something
}
else
{
//do something else
}
// if question is answered correct, call the sum creator method to create new question
MathsAndAnswerScript.instance.SumCreator();
}