gpt4 book ai didi

java - 把一个Integer变成一组图片

转载 作者:行者123 更新时间:2023-11-30 08:15:39 24 4
gpt4 key购买 nike

我正在制作一个《我的世界》模组,为玩家实现一个新的“能量”系统。获取这种能量的方法有很多种,我希望它能够在屏幕上显示玩家的能量量。我的计划是制作一个 GUI(使用 OpenGL,如《minecraft》所用),使用名为“energybar.png”的文件:

energybar.png

打印数字。这是我所拥有的方法的代码,该方法将按照描述进行操作。

@SubscribeEvent
public void onGUIRenderEvent(RenderGameOverlayEvent event){

if(event.isCancelable() || event.type != RenderGameOverlayEvent.ElementType.EXPERIENCE)
{
return;
}

int xPos = 10;
int yPos = 10;
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_LIGHTING);

mc.renderEngine.bindTexture(energybar);

String energyString = Integer.toString(Energy.PlayerTotalEnergy);

for(int i=0; i < energyString.length(); i++) {
LogHelper.info("Energy: " + energyString);
drawTexturedModalRect(xPos, yPos, (Energy.PlayerTotalEnergy / (int)Math.pow(10, i))*16, 0, 16, 16);
xPos += 16;
}

}

照片中的每个数字都是间隔开的,因此它应该在各自的 16 个像素内(即:0 是 x 位置 0-16,1 是 x 位置 17-32,等等)。根据我的世界 GUI 系统的标准定义,照片的尺寸为 256x256。这是画图方法的布局:

void drawTexturedModalRect(int xPosition, int yPosition, int uPosition, int vPosition, int width, int height)

我遇到的问题是,我需要打印到屏幕上的数字的 U 位置无法正常工作。

我也尝试过通过:

energyString.substring(i, i)

到一个方法,该方法获取子字符串并将其转换回整数,然后将其乘以 16 以获得 uPosition,但是当我执行以下操作时:

String energyString = Integer.toString(Energy.PlayerTotalEnergy);

Integer.toString()String.valueOf() 方法在处理零时遇到问题。例如,如果 Energy.PlayerTotalEnergy 只是 0,则它们不会返回字符串 "0",而只会返回 "".

如果有人可以帮助我弄清楚为什么我无法让它工作,或者想出更好的主意如何使用 Minecraft 和 OpenGL 将此数字打印到我的屏幕上。我不只是将其打印为数字的原因是我想保持红色数字的外观。

最佳答案

这更多的是猜测。在我看来,如果 Energy.PlayerTotalEnergy 是,比方说,327,那么您的 uPosition 将是:

i=0: u= 327*16
i=1: u= 32*16
i=2: u= 3*16

您的意思是它们是 7*162*163*16 吗?在这种情况下,您应该使用 10mod它们:

drawTexturedModalRect(xPos, yPos, ( (Energy.PlayerTotalEnergy / (int)Math.pow(10, i))%10)*16, 0, 16, 16);

关于java - 把一个Integer变成一组图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com