如何在每个循环中统一增加分数?

问题描述 投票:0回答:1

我正在使用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);
}
c# loops unity3d increment
1个回答
2
投票

只是假设在这里

(_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将是用于平等的定义阈值

© www.soinside.com 2019 - 2024. All rights reserved.