Fazer o Personagem andar

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!

Consegui fazer ele andar!! :sweat_smile: