Keylistener funktioniert nicht

Diskutiere Keylistener funktioniert nicht im AWT, Swing, JavaFX & SWT Forum; Hi, ich habe ein altes Pacman-Javaprogramm hervorgeholt, früher hat es funktioniert. Jetzt gehts nicht mehr. Die Tastatureingaben über den...

  1. chrysi_m
    chrysi_m Neues Mitglied
    Hi, ich habe ein altes Pacman-Javaprogramm hervorgeholt, früher hat es funktioniert. Jetzt gehts nicht mehr. Die Tastatureingaben über den Keylistener funktioniert nicht mehr.
    Wenn ich JApplet durch Applet ersetze, dann geht es, aber das Bild flimmert.
    Wie muss ich den Code anpassen, damit es mit JApplet klappt?
    Übrigens wenn ich einen Mouselistener benutze, funktionieren die Mauseingaben auch im JApplet, aber eben nicht die Tastatureingaben. Ich glaube, das JApplet verliert irgendwie den Focus. Hier ist der Code der Hauptklasse. Danke für mögliche Antworten:
    Code (Java):
    import java.applet.*;
    import java.awt.*;
    import javax.swing.*;
    import java.io.*;
    import java.awt.Graphics;
    import java.awt.Event;
    import java.awt.Font;
    import java.awt.Color;
    import java.awt.event.*;

    public class Pacman extends JApplet implements KeyListener{
        Punkte punkte = new Punkte();
        Spieler spieler = new Spieler();
        Gegner gegner = new Gegner();
        int Zeit = 200;
        int breite = 40;
        int RichtungNeu = 0;
        Level level = new Level();
        Image bild;
        AudioClip Space;
     
        public void init() { // Spielstart
            addKeyListener(this);
            try {level.levellesen("Level 1.txt", punkte, gegner);}
            catch(IOException e){System.out.println("Es ist ein Fehler beim lesen aufgetreten\n" + e);}
            MediaTracker mt = new MediaTracker(this);
            this.setSize(java.awt.Toolkit.getDefaultToolkit().getScreenSize());
     
     
        }
     
        public void SoundAbspielen(String SoundDatei) { // Spielklänge
            Space = getAudioClip(getCodeBase(), SoundDatei);
            Space.play(); }
     
        public void keyReleased(KeyEvent e) { // Tastatureingabe
            spieler.setzeRichtungMerken(spieler.gibRichtung());
            if(level.gibLevelBeendet() == 1) level.setzeLevelBeendet(0);
            if (e.getKeyCode() == 'a') RichtungNeu = 3;
            if (e.getKeyCode() == KeyEvent.VK_LEFT) RichtungNeu = 1;
            if (e.getKeyCode() == KeyEvent.VK_UP) RichtungNeu = 2;
            if (e.getKeyCode() == KeyEvent.VK_DOWN) RichtungNeu = 4; }
     
        public void paint(Graphics g) { // Spielschleife und Grafische Darstellung
          int xpaint, ypaint;
     
          // Spielschleife
          if(RichtungNeu == 4 && level.gibFeld(level.gibX(), level.gibY()+1) != 2) {spieler.setzeRichtung(4); RichtungNeu = 0;}
          if(RichtungNeu == 3 && level.gibFeld(level.gibX()+1, level.gibY()) != 2) {spieler.setzeRichtung(3); RichtungNeu = 0;}
          if(RichtungNeu == 2 && level.gibFeld(level.gibX(), level.gibY()-1) != 2) {spieler.setzeRichtung(2); RichtungNeu = 0;}
          if(RichtungNeu == 1 && level.gibFeld(level.gibX()-1, level.gibY()) != 2) {spieler.setzeRichtung(1); RichtungNeu = 0;}
     
          if(spieler.gibRichtung() == 5) spieler.PacmanBewegung(0, level, spieler, punkte, gegner);
          if(spieler.gibRichtung() == 1) spieler.PacmanBewegung(1, level, spieler, punkte, gegner);
          if(spieler.gibRichtung() == 2) spieler.PacmanBewegung(2, level, spieler, punkte, gegner);
          if(spieler.gibRichtung() == 3) spieler.PacmanBewegung(3, level, spieler, punkte, gegner);
          if(spieler.gibRichtung() == 4) spieler.PacmanBewegung(4, level, spieler, punkte, gegner);

          gegner.GegnerBewegung(1, level, spieler, punkte, gegner);
          gegner.GegnerBewegung(2, level, spieler, punkte, gegner);
          gegner.GegnerBewegung(3, level, spieler, punkte, gegner);
          gegner.GegnerBewegung(4, level, spieler, punkte, gegner);
     
          // Grafische Darstellung
          xpaint = 0;
          ypaint = 0;
     
         for(int t = 1; t<=2; t++) {
            xpaint = 0;
            ypaint = 0;
     
           for(int n = 0; n<=level.gibZeichenAnzahl()-1; n++) {
              for(int k = 0; k<=level.gibZeichenAnzahl()-1; k++) {
                  if(level.gibFeld(k, n)==1) {if(t==1) bild = getImage(getCodeBase(),"./stern1.jpg"); if(t==2) bild = getImage(getCodeBase(),"./stern2.jpg");}
                  if(level.gibFeld(k, n)==2) bild = getImage(getCodeBase(),"./mauer.jpg");
                  if(level.gibFeld(k, n)==3) bild = getImage(getCodeBase(),"./leer.jpg");
                  if(level.gibFeld(k, n)==4) bild = getImage(getCodeBase(),"./pacman2.jpg");
                  if(level.gibFeld(k, n)==5) bild = getImage(getCodeBase(),"./gegner.jpg");
                  g.drawImage(bild, xpaint, ypaint, breite, breite, this);
                  xpaint = xpaint + breite;
                  }
              ypaint = ypaint + breite;
              xpaint = 0;
            }
       
            // Animation von Pacman
            if(t==1 && spieler.gibRichtung() == 1) {
                bild = getImage(getCodeBase(),"./leer.jpg");
                g.drawImage(bild, level.gibX()*breite, level.gibY()*breite, breite, breite, this);
                g.drawImage(bild, (level.gibX()+1)*breite, level.gibY()*breite, breite, breite, this);
                bild = getImage(getCodeBase(),"./pacman1.jpg");
                g.drawImage(bild, (int) ((level.gibX()+0.5)*breite), level.gibY()*breite, breite, breite, this); }
                       
            if(t==1 && spieler.gibRichtung() == 2) {
                bild = getImage(getCodeBase(),"./leer.jpg");
                g.drawImage(bild, level.gibX()*breite, level.gibY()*breite, breite, breite, this);
                g.drawImage(bild, level.gibX()*breite, (level.gibY()+1)*breite, breite, breite, this);
                bild = getImage(getCodeBase(),"./pacman1.jpg");
                g.drawImage(bild, level.gibX()*breite, (int) ((level.gibY()+0.5)*breite), breite, breite, this); }
       
            if(t==1 && spieler.gibRichtung() == 3) {
                bild = getImage(getCodeBase(),"./leer.jpg");
                g.drawImage(bild, level.gibX()*breite, level.gibY()*breite, breite, breite, this);
                g.drawImage(bild, (level.gibX()-1)*breite, level.gibY()*breite, breite, breite, this);
                bild = getImage(getCodeBase(),"./pacman1.jpg");
                g.drawImage(bild, (int) ((level.gibX()-0.5)*breite), level.gibY()*breite, breite, breite, this); }
       
            if(t==1 && spieler.gibRichtung() == 4) {
                bild = getImage(getCodeBase(),"./leer.jpg");
                g.drawImage(bild, level.gibX()*breite, level.gibY()*breite, breite, breite, this);
                g.drawImage(bild, level.gibX()*breite, (level.gibY()-1)*breite, breite, breite, this);
                bild = getImage(getCodeBase(),"./pacman1.jpg");
                g.drawImage(bild, level.gibX()*breite, (int) ((level.gibY()-0.5)*breite), breite, breite, this); }
       
            repaint();
            try { Thread.sleep( (int)(0.5*Zeit));}
            catch (InterruptedException e) {} }
       
            g.setColor(Color.YELLOW);
            g.fillRect(0, ypaint, breite * level.gibZeichenAnzahl(), 100);
            g.setColor(Color.BLACK);
            g.drawString("Punkte = " + punkte.gibPunkte(), 0, ypaint + 20);
            g.drawString("Versuche = " + level.gibVersuche(), 0, ypaint + 2*20);
            if(level.gibLevelBeendet() == 1) g.drawString("Sie haben das Level beendet!", 0, ypaint + 3*20);
        }

        public void keyPressed(KeyEvent e) {}
        public void keyTyped(KeyEvent e) {}

    }
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Viktim
    Viktim Aktives Mitglied
    Könntest du die anderen Klassen auch noch einfügen?
    Dann guck ich mal was ich machen kann :D
     
Die Seite wird geladen...

Keylistener funktioniert nicht - Ähnliche Themen

KeyListener funktioniert nicht während Timer läuft
KeyListener funktioniert nicht während Timer läuft im Forum Spiele- und Multimedia-Programmierung
KeyListener funktioniert nicht wenn ich ein JButton hinzufüge
KeyListener funktioniert nicht wenn ich ein JButton hinzufüge im Forum AWT, Swing, JavaFX & SWT
KeyListener funktioniert nicht
KeyListener funktioniert nicht im Forum AWT, Swing, JavaFX & SWT
KeyListener funktioniert nicht richitg
KeyListener funktioniert nicht richitg im Forum AWT, Swing, JavaFX & SWT
KeyListener funktioniert nicht? Weshalb?
KeyListener funktioniert nicht? Weshalb? im Forum Java Basics - Anfänger-Themen
Thema: Keylistener funktioniert nicht