ola pessoal, estou desenvolvendo um pequeno joguinho, só que a maior dificuldade está sendo criar uma tela para o jogo. eu consegui colocar um boneco na tela e mover com eventos do teclado. esse boneco eu achei na net, portanto não sei como fazer.
a minha duvida é a seguinte, existe algum software no qual eu possa desenhar como sera a cara do meu jogo e importar no java?
Voce pode desenhar no seu editor de imagens favorito como o Paint.NET (Um Photoshop free), ou o Fireworks e etc…
Voce salva como bmp, png, gif, jpg e etc.
E como voce esta adicionando a imagem na tela?
segue abaixo os codigos…no caso se fosse uma aplicação simples, eu faço o desenho em algum desses programa e coloco no frame…eh isso?
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
public class Logica implements Runnable {
static long temp = 1;
private Jogo gamePanel;
static List<Personagem> personagens = new ArrayList<Personagem>();
final static int LARGURA = 320;
final static int ALTURA = 320;
// Váriavel para finalizar o jogo.
private boolean running = true;
public enum Direcao {
CIMA, DIREITA, BAIXO, ESQUERDA
}
public Logica(Jogo panel) {
this.gamePanel = panel;
// Criando personagens
Controle controle1 = new Controle(KeyEvent.VK_UP, KeyEvent.VK_RIGHT,KeyEvent.VK_DOWN, KeyEvent.VK_LEFT);
Personagem personagem1 = new Personagem(1, "Chara1.png", 100, 100, 24,32, 15);
personagem1.setControle(controle1);
personagens.add(personagem1);
;
}
public void run() {
long tempAnterior = System.currentTimeMillis();
while (running) {
tratarJogo();
gamePanel.renderizar();
gamePanel.repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
temp = System.currentTimeMillis() - tempAnterior;
tempAnterior = System.currentTimeMillis();
}
}
private void tratarJogo() {
moverJogador();
}
private void moverJogador() {
for (Personagem personagemPrincipal : personagens) {
Controle controle = personagemPrincipal.getControle();
int posXAnterior = personagemPrincipal.getPosicaoX();
int posYAnterior = personagemPrincipal.getPosicaoY();
if (controle.paraCima) {
personagemPrincipal.andar(Direcao.CIMA.ordinal());
}
if (controle.paraBaixo) {
personagemPrincipal.andar(Direcao.BAIXO.ordinal());
}
if (controle.paraDireita) {
personagemPrincipal.andar(Direcao.DIREITA.ordinal());
}
if (controle.paraEsquerda) {
personagemPrincipal.andar(Direcao.ESQUERDA.ordinal());
}
}
}
}
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Personagem implements Comparable<Personagem> {
private int id; //codigo do personagem
private int posicaoX, posicaoY; //posição
private BufferedImage imagem; //imagem carregada;
private int direcao = 2;
private int velocidade;
private Controle controle;
public final int tamanhoX, tamanhoY;
public long anim = 1;
public Personagem(int id, String img, int posicaoX, int posicaoY,int tamanhoX, int tamanhoY, int velocidade) {
this.id = id;
this.posicaoX = posicaoX;
this.posicaoY = posicaoY;
this.tamanhoX = tamanhoX;
this.tamanhoY = tamanhoY;
this.velocidade = velocidade;
try {
imagem = ImageIO.read(getClass().getClassLoader().getResource(img));
} catch (IOException e) {
System.out
.println("Erro ao buscar imagem do personagem.\nEncerrando aplicação");
System.exit(0);
}
}
public void andar(int novaDirecao) {
direcao = novaDirecao;
anim++;
switch (novaDirecao) {
case 0:
posicaoY -= (velocidade * Logica.temp) / 100;
break;
case 1:
posicaoX += (velocidade * Logica.temp) / 100;
break;
case 2:
posicaoY += (velocidade * Logica.temp) / 100;
break;
case 3:
posicaoX -= (velocidade * Logica.temp) / 100;
break;
}
}
public int getPosicaoX() {
return posicaoX;
}
public void setPosicaoX(int posicaoX) {
this.posicaoX = posicaoX;
}
public int getPosicaoY() {
return posicaoY;
}
public void setPosicaoY(int posicaoY) {
this.posicaoY = posicaoY;
}
public BufferedImage getImagem() {
return imagem;
}
public int getDirecao() {
return direcao;
}
public void setDirecao(int direcao) {
this.direcao = direcao;
}
public int getId() {
return id;
}
public Controle getControle() {
return controle;
}
public void setControle(Controle controle) {
this.controle = controle;
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
public int compareTo(Personagem o) {
return 0;
}
}
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Jogo extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage tela = new BufferedImage(Logica.LARGURA,
Logica.ALTURA, BufferedImage.TYPE_4BYTE_ABGR);
public Jogo() {
setPreferredSize(new Dimension(Logica.LARGURA, Logica.ALTURA));
setFocusable(true);
requestFocus();
}
public void renderizar() {
Graphics2D dbg = (Graphics2D) tela.getGraphics();
for (Personagem personagem : Logica.personagens) {
dbg.drawImage(personagem.getImagem(), personagem.getPosicaoX(),
personagem.getPosicaoY() - 5, personagem.getPosicaoX()
+ personagem.tamanhoX, personagem.getPosicaoY()
+ personagem.tamanhoY, (int) (personagem.anim % 3)
* personagem.tamanhoX, personagem.getDirecao()
* personagem.tamanhoY,
(int) (personagem.anim % 3 * personagem.tamanhoX)
+ personagem.tamanhoX,
(personagem.getDirecao() * personagem.tamanhoY)
+ personagem.tamanhoY, null);
}
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
g.drawImage(tela, 0, 0, null);
}
}
Se for o que eu estou pensando é bem simples…
importe o swing depois usa um :