0

我不完全确定标题是否准确,因为我不知道真正的问题。基本上,我正在尝试将燃料元素渲染到我的游戏中,但我希望它适合其 98 像素的容器。我已经做的是以下内容:

    float fuelDisplay = fuel / maxFuel;
    float fuelDisplayFinal = fuelDisplay*98;
    g.setColor(Color.YELLOW);
    g.fillRect(15, 81, (int)fuelDisplayFinal, 38);
    g.drawImage(Bank.bar, 0, 70, null);

当我开始游戏时,它看起来很好,但是一旦变量“燃料”减少,条形图就会完全消失(很可能其宽度设置为 0)。

现在,我假设一旦将其转换为整数,它就会简单地向下舍入为零,但我不确定如何解决这个问题。我在任何地方都找不到解决方案,而我发现的类似问题已经通过我所做的事情得到了“解决”。任何和所有的帮助表示赞赏。这可能只是我非常无知的一个例子,但我希望不会。感谢大家!

4

1 回答 1

2

如果fuelmaxFuel都是整数,则在您尝试将其分配给之前fuel / maxFuel,结果将是一个整数。fuelDisplay

因此,如果fuel == 99maxFuel == 100,整数除法的结果将为零,fuelDisplay尽管它本身是一个浮点数,但也是如此。

您可以通过对变量使用浮点数或(可能更好)强制转换来确保结果是浮点数来解决这个问题:

float fuelDisplay = (float) fuel / maxFuel;

或者,您可以通过重新排列公式来完全摆脱浮点:

int fuelDisplayFinal = fuel * 98 / maxFuel;
g.setColor(Color.YELLOW);
g.fillRect(15, 81, fuelDisplayFinal, 38);
g.drawImage(Bank.bar, 0, 70, null);

假设它fuelDisplay仅在此处本地使用,并且您fuelDisplayFinal以后不再需要浮点形式。

于 2013-06-25T05:48:41.013 回答