Buenos días,
Ante todo presentarme, y dar las gracias a la comunidad de antemano por acogerme
Soy estudiante de informática y estoy programando en Java un Space Invaders muy simple pero me estoy topando con unos incómodos provblemas.
Lo primero de todo es que despues de añadir los "Listeners" a las teclas que quiero usar, solo me hace caso si, una vez está corriendo la ventana de Java pulso en la tecla "Win" para desplegar el menú de inicio y luego la pulso de nuevo para cerrarla. Muy raro, por lo menos para mi que soy novato.
Pero lo más extraño de todo es lo que pasa con los métodos para pintar por pantalla. En mi "juego" tengo una matriz en la que están todas las naves y el método paint de la clase JFrame recorre esa matriz y cuando encuentra uns nave la pinta como un rectángulo (luego mejoraré esto) si es una nave atacante la pinta de azul y si es la que mueve el usuario roja.
Después tengo unos métodos que mueven las naves y actualizan el frame para qe se vean los cambios. (por cierto estoy desarrollando en BlueJ por obligación de la facultad).
Y aquí viene el poltergeist. Si actualizo el JFrame desde métodos que no usen el teclado (en blueJ se puede hacer haciendo metodos en el main que son accesibles pulsando el botón derecho sobre los objetos) todo funciona "bien" y lo pongo entre comillas porque el fondo empieza siendo blanco y luego pasa a gris, pero salvo por ese detalle todo va bien.
Pero si llamo al método de actualizar desde los eventos del teclado, me duplica las naves cuando se mueven, es decir, pinta la nueva nave pero la antigua, que tiene que borrarla, no lo hace.
Alguien me puede ayudar?
Muchas gracias de antemano y si se necesita posteo el código.