C# 计算通过液位所需值的公式

C# 计算通过液位所需值的公式,c#,math,C#,Math,我有下面的公式来计算为了进入下一关需要移除的球的数量。每一关比上一关多5个球 int level = Level.getLevel(); int balls = level * 5; int required = (int)Mathf.Ceil(balls * 0.0275f * level); 我似乎无法找到一个好的公式来计算所需的,而不去检查球或球在哪里!=必修的。所以基本上球必须总是小于要求 就我所拥有的,在大约37级时需要>球,这使得击败这个级别是不可能的。我可

我有下面的公式来计算为了进入下一关需要移除的球的数量。每一关比上一关多5个球

    int level = Level.getLevel();
    int balls = level * 5;
    int required = (int)Mathf.Ceil(balls * 0.0275f * level);
我似乎无法找到一个好的公式来计算所需的,而不去检查球或球在哪里!=必修的。所以基本上球必须总是小于要求


就我所拥有的,在大约37级时需要>球,这使得击败这个级别是不可能的。我可以使用什么更好的公式?

首先,选择一个函数,给出所需的球的分数。这应该从接近0开始,接近但仍然低于1。比如说,

double frac;
if (level < 24)
  frac = level / 30.0;
else
  frac = 1.0 - 5.0/level;
以防你需要一些警卫:

if (required < 1)
  required = 1;
if (required >= balls)
  required = balls - 1;

你可以将Math.Min添加到你的公式中,这样你就可以在required和balls或balls-1之间取最小值。required=level*6怎么样?我不明白为什么这需要花哨。@Kevin,因为它需要在球和要求之间有一个很大的间隙,然后慢慢地靠近,但决不能是相同的或超过。如果要求6分,球数5分,那么1级是不可能的,我很困惑。您最初说过球必须始终小于所需值。是哪一个?小于或大于?
if (required < 1)
  required = 1;
if (required >= balls)
  required = balls - 1;