用户界面使用java fillRect绘制类似电池的子弹计数器
我在一个游戏中工作,现在我被困在gui的一个愚蠢的部分,我无法意识到正确的方法来做它
以下是我对子弹计数器的逻辑:
g.setColor(Color.black);
g.fillRect(600,20,120,40);
g.setColor(Color.white);
g.fillRect(605,25,110,30);
for(int i=0;i < player.ammo;i++){
g.setColor(Color.black);
g.fillRect(610+(i*5),30,20,20);
}
bs.show();
这实际上工作得很好,问题是子弹计数器增长为单个条形,我希望它在单个矩形中增长,如下所示:▐▐▐▐▐▐▐▐ 就像照相机的电池电量指示器一样,我已经尝试了我能想到的一切
注意事项:如果可能的话,我想只使用图像的方法。getGraphics()
提前谢谢
# 1 楼答案
这是一个独立的倒计时版本。大部分是锅炉板。它使用计时器来减少子弹数量
详细信息在BulletCounter类中
当然,这是一个酒吧骨骼版本。您可以根据需要添加其他方法。例如:
bullets
的尺寸和颜色# 2 楼答案
让我们从一个简单、孤立的例子开始
您需要知道的是:
在此基础上,您可以根据当前进度渲染进度条,只需计算需要显示的条数,然后通过条宽和条间距将每个条从最后一条偏移
既然你可能不需要一个完全成熟的组件,我会考虑使用某种“着色”的概念来进一步解耦(并重新使用)这个概念,例如……p>
对我来说,进展应该来自某种可以适当抽象的模型,允许渲染过程解耦(我有一个可绘制的模型,我有一个mash;)
这通常会使过程复杂化,但是,假设您愿意在重新绘制图像之前清除图像(或进度条使用的区域),那么使用上述方法应该很容易做到