Пытаюсь сделать индикатор здоровья выше моего игрока (используя 2d графику), но у меня проблемы.
Я удостоверился, что даю целое число, а не двойное число.
f - мой JFrame.
f.board - это массив JLabel (17x17), который является моей доской для игры
p getHealth возвращает 100
p getHealthTotal возвращает 200
50-е, которые вы видите, показывают, насколько большой должна быть полоса здоровья
void paint() {
f.glass = new JPanel() {
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.drawImage(img, f.board[p.getY()][p.getX()].getX() - 28, f.board[p.getY()][p.getX()].getY() - 20,
null);
g2d.setColor(Color.BLACK);
g2d.drawRoundRect(f.board[p.getY()][p.getX()].getX() + 5, f.board[p.getY()][p.getX()].getY() - 35,
50, 10, 5, 5);
g2d.setColor(healthColor);
g2d.fillRoundRect(f.board[p.getY()][p.getX()].getX() + 5,f.board[p.getY()][p.getX()].getY() - 35,
(p.getHealth() / p.getHealthTotal()) * 50, 10,5,5);
g2d.setColor(damageColor);
g2d.fillRoundRect(f.board[p.getY()][p.getX()].getX() + 5 + (p.getHealth() / p.getHealthTotal()) * 50,
f.board[p.getY()][p.getX()].getY() - 35, 50 - ( p.getHealth() / p.getHealthTotal()) * 50,
10, 5, 5);
/*g2d.setColor(Color.BLACK);
g2d.drawRoundRect(f.board[p.getY()][p.getX()].getX() + 10, f.board[p.getY()][p.getX()].getY() - 25, 40, 5, 5, 5);
g2d.setColor(expColor);
g2d.fillRoundRect(f.board[p.getY()][p.getX()].getX() + 10, f.board[p.getY()][p.getX()].getY() - 25, p.getExp() / 100 * 40, 5, 5, 5);
/*g2d.setColor(expBorder);
g2d.drawRoundRect(740, 10, 100, 40, 5, 5);
g2d.setColor(expColor);
g2d.fillRoundRect(740, 10, p.getExp(), 40, 5, 5);
g2d.setColor(healthBorder);
g2d.drawRoundRect(610, 10, 100, 40, 5, 5);
g2d.setColor(healthColor);
g2d.fillRoundRect(610, 10, p.getHealth() / p.getHealthTotal() * 100, 40, 5, 5);
p.ge*/
g2d.drawImage(Toolkit.getDefaultToolkit().getImage("src/BossBattles/Images/Settings.png"), 925, 15, null);
}
};
f.glass.setOpaque(false);
f.setGlassPane(f.glass);
f.glass.setVisible(true);
f.glass.repaint();
}
Я ожидаю бар, наполовину зеленый, наполовину красный. Тем не менее, я получаю заполненную красную полосу.
Я пробовал несколько разных значений для p.getHealth, но все (что я пробовал) возвращают полностью красную полосу. (За исключением 200, которое возвращает зеленую полосу)