我正在使用foreach循环来检查用户输入的答案给出了5个乘法问题。 (使用实例在开始时显示5个问题)
现在我试图添加分数计数器并将其增加1如果答案是正确的并且取决于分数我将显示星星。例如,如果分数小于3然后1星,如果4然后2星和如果5然后3星。即使所有答案都正确,我也只得到一颗星。任何人都可以告诉我如何实现这一目标吗?
我尝试在if语句中添加score ++。但它不会增加得分值。
public void CheckButton()
{
int answer;
foreach (TestModeQuestionUI _TestModeQuestionUIRefrence in testModeQuestionExampleList)
{
answer = _TestModeQuestionUIRefrence.GetAnswerInputField();
if ((_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b) == answer)
{
_TestModeQuestionUIRefrence.SetResultOfAnswerInputField(1);
score++;
}
else
{
_TestModeQuestionUIRefrence.SetResultOfAnswerInputField(2);
}
}
roundCompletePanel.SetActive(true);
CheckHowManyStars();
ShowRoundCompletePanel(score);
}
只是假设在这里
(_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b) == answer
都是float
的价值观。切勿直接使用float
来比较==
。他们可能永远不会平等,即使他们应该在逻辑上。由于Floating point precision,它们可能因非常小的“epsilon”而不同。
使用Mathf.Approximately
,它恰好使用那个小的“epsilon”来进行相等定义。
if (Mathf.Approximately(_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b, answer))
它类似于
if (_TestModeQuestionUIRefrence.a * _TestModeQuestionUIRefrence.b - answer <= diferenceSmallEnoughThreshold)
其中differenceSmallEnoughThreshold
将是用于平等的定义阈值