querias usar da maneira q foi usado num projeto para renderizar as imagens das sprits game mas não entendo muito bem tenho uma baita dificuldade com inserção de imagem. o código e brande para postar aqui mas vou botar algo (nem todo código vai interessa aqui mas e para terem uma noção do q queria utilizar)…
//; variaveis
public JFrame frame;
public static final int WIDTH = 480;
public static final int HEIGHT = 320;
public static final int SCALE = 2;
public int fps = 0;
private Thread thread;
private boolean isRunning;
private BufferedImage image;
public static List entities;
public static List inimigos;
public static List tiros;
public static SpriteSheet spriteSheet;
public static Player player;
public static World world;
public static Random rand; // Foi criado na classe Game por que dai pode
//ser usado sempre q quiser, nao precisa ficar criando instancias.
public UI ui;
public Game() {
rand = new Random();
this.addKeyListener(this);
initFrame();
// inicializando objetos
ui = new UI();
image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
// import Araylist da biblioteca java.util!
entities = new ArrayList<Entity>();
inimigos = new ArrayList<Inimigos>();
tiros = new ArrayList<Tiros>();
spriteSheet = new SpriteSheet("/Spryte32Pixels.png"); // importante!
player = new Player(0, 0, 32, 32, spriteSheet.getSpriteSheet(0, 0, 32, 32));
entities.add(player);
world = new World("/miniMapa.png");
}
/// metodo render q esta na classe principal!!!
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
// importe graphics da biblioteca AWT;
Graphics g = image.getGraphics();
// Vamos inserir um plano de fundo com a cor verde no padrao RGB!
g.setColor(new Color(0, 0, 0));
g.fillRect(0, 0, WIDTH, HEIGHT);
// A baixo vamso trabalhar a renderização das imagens!
world.render(g);// esse render() pertence a classe World!
for (int i = 0; i < entities.size(); i++) {
Entity e = entities.get(i);
e.render(g);
}
for (int i = 0; i < tiros.size(); i++) {
tiros.get(i).render(g);
}
// vamos por aqui para que ele seja renderizado acima de todas as imagens!
ui.render(g);
// dispose e um metodo de segurança que evita ceros rerros ou bugs!
g.dispose();
// O grafico g recebe como valor o grafico do BufferedStrategy!
g = bs.getDrawGraphics();
g.drawImage(image, 0, 0, WIDTH * SCALE, HEIGHT * SCALE, null);
// Fonte com as muniçoes exibido na tela!
g.setFont(new Font("arial", Font.BOLD,20));
g.setColor(Color.white);
g.drawString("Munição: "+player.muniçao, 15, 60);
// Fonte com o fps exibido na tela!
g.setFont(new Font("Arial", Font.BOLD, 20));
g.setColor(Color.BLACK);
g.drawString("FPS: " + fps, (WIDTH * SCALE) - 100, (HEIGHT * SCALE) - 50);
// Chama as BufferedImage
bs.show();
}
/// e o render da classe Word
public void render(Graphics g) {
// por q e o tamanho de cada tile!
int xstart = (Camera.x >> 5);
int ystart = (Camera.y >> 5);
//
int xfinal = xstart+(Game.WIDTH >> 5);
int yfinal = ystart+(Game.HEIGHT >> 5);
for (int xx = xstart; xx <= xfinal; xx++) {
for (int yy = ystart; yy <= yfinal; yy++) {
// vamos usar um if, para caso der valores negativos em alguma das direções!
if(xx<0 || yy<0 || xx>=WIDTH || yy>=HEIGHT) {
continue;
}
Tiles tile = tiles[xx + (yy * WIDTH)];
tile.render(g);
}
}
}