Я только что добавил в свою игру опцию, благодаря которой у всех врагов будет случайный цвет одежды вместо обычного синего. Я использую этот код для рисования прямоугольников поверх рубашки врага.
BufferedImage image = new BufferedImage(z.getWidth(), z.getHeight(),
BufferedImage.TYPE_4BYTE_ABGR);
try{
image = ImageIO.read(new File("C:\\Program Files (x86)\\ZombieGame\\
Zombie.png"));
}catch (IOException ex) {
}
int j, k, red, green, blue;
for(j = 0; j < z.getWidth(); j++){
for(k = 0; k < z.getHeight(); k++){
Color c = new Color(image.getRGB(j, k));
red = c.getRed();
green = c.getGreen();
blue = c.getBlue();
if(red == 0 && green == 0 && blue == 178){
g2d.setColor(Color.red);
Rectangle r = new Rectangle(j,k, 1, 1);
Path2D.Double rect = new Path2D.Double(r, at);
g2d.fill(rect);
}
}
}
Дело в том, что когда я применяю это, игра будет работать в два раза медленнее (до того, как я добавил этот код, я получил твердые 80 кадров в секунду, но так быстро, как я его добавил, я получил около 30 кадров в секунду). Мой вопрос в том, есть ли лучший способ сделать это, в котором я мог бы изменить цвет определенных частей изображения без резкого снижения частоты кадров?