@Override
	public void actionPerformed(ActionEvent e) {
		jugador.mover(this);
		
		// Mover balas.
		ArrayList<Bala> balas = jugador.getBalas();
		for (int i = 0; i < balas.size(); i++) {
			Bala b = balas.get(i);
			if(b.getVisible()){
				b.mover(this);
			}else{
				balas.remove(i);
			}
		}
		
		// Movemos enemigos.
		for (int i = 0; i < navesEnemigas.size(); i++) {
			String tipo = navesEnemigas.get(i).getTipoNave();
			if (tipo == "A") {
				EnemigoA enemigo = (EnemigoA) navesEnemigas.get(i);
				if(enemigo.getVisible()){
					enemigo.mover(this);
				}else{
					navesEnemigas.remove(i);
				}
			}	
			if (tipo == "B") {
				EnemigoB enemigo = (EnemigoB) navesEnemigas.get(i);
				if(enemigo.getVisible()){
					enemigo.mover(this);
				}else{
					navesEnemigas.remove(i);
				}
			}
		}
		
		// Si se han eliminado todos los enemigos o el jugador ha chocado con una nave enemiga fin del juego
		// y se atienden a peticiones de teclado para reiniciar o no el juego.
		if(getTotalEnemigos() == 0 || !jugador.getVisible()){
			// No detenemos el timer para que siga habiendo movimiento y no quede una detención en seco del dibujado.
			// timer.stop();
			gameOver = true;
		}
		
		// Control de colisiones
		comprobarColisiones();
		repaint();
	}