Bom dia pessoal.
Estou fazendo um jogo e acabei empacando em uma coisa.
Quero fazer um jogo que as pessoas tem apertar freneticamente em uma tecla para que o personagem se movimente. É uma corrida de gatos.
package teste;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class Teste extends JFrame implements KeyListener{
BufferedImage backBuffer;
int FPS = 30;
int janelaW = 800;
int janelaH = 600;
ImageIcon fundo = new ImageIcon(getClass().getResource("/resources/Corrida.jpeg"));
ImageIcon gato1 = new ImageIcon(getClass().getResource("/resources/gato1.png"));
JButton correr;
int g1,g2,g3,g4;
int key;
sprite gato11 = new sprite(1, 200, 200);
public void atualizar() {
/*AQUI ESTÁ O MEU PROBLEMA, NO ATUALIZAR, EU QUERIA PODER USAR O
KEYPRESSED MAIS DA ERRO,
NÃO ACEITA USAR.
EU SOU NOVATA EM JAVA, SE TIVER OUTRA FUNÇÃO NATIVA DO JAVA QUE
EU CONSIGA SABER QUE TECLA FOI PRESSIONADA E EU PUDER FAZER O GATO SE MEXER.*/
}
public void desenharGraficos() {
Graphics g = getGraphics()
Graphics bbg = backBuffer.getGraphics();
fundo.setImage(fundo.getImage().getScaledInstance(800, 600, 100));
bbg.drawImage(fundo.getImage(),0,0, this);
bbg.drawImage(gato1.getImage(), g1, 100, this);
g.drawImage(backBuffer, 0, 0, this);
}
public void inicializar() {
setTitle("Titulo do Jogo!");
setSize(janelaW, janelaH)
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE)
setLayout(null);
setVisible(true)
backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB)
fundo.setImage(fundo.getImage().getScaledInstance(800, 600, 100));
gato1.setImage(gato1.getImage().getScaledInstance(100, 100, 10));
g1 = 10;
g2 = 10;
g3 = 10;
g4 = 10;
}
public void run() {
inicializar();
while (true) {
atualizar();
/*CHAMAMOS O METODO ATUALIZAR O TEMPO INTEIRO
ESSE ATUALIZAR QUE TENHO QUE RESOLVER O PROBLEMA
DENTRO DELE EU NÃO ESTOU CONSEGUINDO COLOCAR O KEYPRESSED*/
desenharGraficos();
try {
Thread.sleep(1000/FPS); //PEQUENA PAUSA
} catch (Exception e) {
System.out.println("Thread interrompida!");
}
}
}
public static void main(String[] args) {
Teste game = new Teste();
game.run();
}
//-----------------------------------------------------------------------------
@Override
public void keyPressed(KeyEvent e) {
int Key = e.getKeyCode();
System.out.println("<<<" + e.getKeyCode());
if(Key== KeyEvent.VK_COLON) {
System.out.println("funciona");
g1+=10;
}
//PENSO QUE É ESSE O KEY QUE PRECISO PARA FAZER O GATO ANDAR //CONFORME A QUANTIDADE DE VEZES QUE A PESSOA JA APERTO
//PENSEM ASSIM, EU DIGO QUE A CADA 50 CLIKES, O GATO VAI ANDAR UM POUCO ENTÃO
//AQUELE QUE FOR MAIS RÁPIDO E APERTAR 50 VEZES O BOTÃO, VAI SAIR NA FRENTE.
}
}
PENSO QUE É ESSE O KEY QUE PRECISO PARA FAZER O GATO ANDAR, CONFORME A QUANTIDADE DE VEZES QUE A PESSOA JA APERTO
PENSEM ASSIM, EU DIGO QUE A CADA 50 CLIKES, O GATO VAI ANDAR UM POUCO ENTÃO
AQUELE QUE FOR MAIS RÁPIDO E APERTAR 50 VEZES O BOTÃO, VAI SAIR NA FRENTE.
O ‘G1’ É A COORDENADA X QUE FAZ O GATO ANDAR PRA FRENTE QUANDO ACRESCENTA VALOR.
DA PRA SIMPLESMENTE COLOCAR 'GI+=10; ’ DENTRO DO MÉTODO 'ATUALIZAR, QUE O GATO COMEÇA A ANDAR SOZINHO MAS EU QUERO QUE SÓ FAÇA ESSE INCREMENTO A CADA 10 OU 20 VEZES QUE A PESSOA APERTOU UM BOTÃO DO TECLADO.
ME AJUDEM!