# Brauche hilfe mit KeyEvent



## little__beatle (6. Feb 2009)

hi.
ich habe folgendes projekt:



```
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import org.eclipse.swt.events.KeyAdapter;


public   class MAMPFI  implements KeyListener
{   
   
    //Attribute
    int positionX;
    int positionY;
    boolean verwundbar;
    enum Blickrichtung
    {S,O,N,W}
    Blickrichtung blickrichtung;
   
   
   
   
    // Referenzattribute
   
    MAMPFISYMBOL symbol;
    LABYRINTH labyrinth;
    //BESTENLISTE bestenliste;
   
    // Konstruktor für Objekte der Klasse MAMPFI
MAMPFI ()
    {
    //Die Position kann mangels Labyrinth noch nicht festgelegt werden
    verwundbar = true;
    blickrichtung = Blickrichtung.N;
   
    //bestenliste = new BESTENLISTE();
    labyrinth = new LABYRINTH();
   
    symbol = new  MAMPFISYMBOL() ;
    symbol.RadiusSetzen(50);
    symbol.StartWinkelSetzen(120);
    symbol.BogenWinkelSetzen(300);
    symbol.BogenArtSetzen(2);
    symbol.FuellFarbeSetzen("gelb");
    labyrinth.GaengeErstellen(2,2);

    addKeyListener(this);
}
   
    //Methode
   
   
    void NachOstenBlicken()
    {
        blickrichtung=Blickrichtung.O;
        symbol.StartWinkelSetzen(30);
    }
    void NachSuedenBlicken()
    {
        blickrichtung=Blickrichtung.S;
        symbol.StartWinkelSetzen(300);
    }
    void NachWestenBlicken()
    {
        blickrichtung=Blickrichtung.W;
        symbol.StartWinkelSetzen(210);
    }
    void NachNordenBlicken()
    {
        blickrichtung=Blickrichtung.N;
        symbol.StartWinkelSetzen(120);
    }
    void VerwundbarSetzen(boolean verwundbarNeu)
   
    {
        verwundbar=verwundbarNeu;
        if(verwundbar==true)
        {
            symbol.FuellFarbeSetzen("gelb");
           
        }
        else
        { symbol.FuellFarbeSetzen("blau");
        }
    }
    void rechtsDrehen()
    { switch(blickrichtung)
        {case N:
            NachOstenBlicken();
            break;
         case S:
            NachWestenBlicken();
            break ;
         case O:
            NachSuedenBlicken();
            break;
         case W:
            NachNordenBlicken();
            break;}}
       
    void linksDrehen()
    {switch (blickrichtung)
        {case N:
            NachWestenBlicken();
            break;
         case O:
            NachNordenBlicken();
            break;
         case S:
            NachOstenBlicken();
            break;
         case W:
            NachSuedenBlicken();
            break;
        }}
     
     
       
     private void NachNordenGehen()
     {
         if (positionY>0)
         {labyrinth.mauerSetzen(positionX,positionY-1);
             if(labyrinth.mauer==false)
             {
             positionY=positionY-1;
             symbol.PositionYSetzen(positionY);
             NachNordenBlicken();}
          }
      }
       
     void Oben()
     {
         if (positionY>0)
         {labyrinth.mauerSetzen(positionX,positionY-1);
             if(labyrinth.mauer==false)
             {
             positionY=positionY-1;
             symbol.PositionYSetzen(positionY);
             NachNordenBlicken();}
          }
      }
     
     private void NachOstenGehen()
     {
         if (positionX<10-1)
         {labyrinth.mauerSetzen(positionX+1,positionY);
            { if(labyrinth.mauer==false)
             positionX=positionX+1;
             symbol.PositionXSetzen(positionX);
             NachOstenBlicken();}
          }}
     
     void Rechts()
     {
         if (positionX<10-1)
         {labyrinth.mauerSetzen(positionX+1,positionY);
            { if(labyrinth.mauer==false)
             positionX=positionX+1;
             symbol.PositionXSetzen(positionX);
             NachOstenBlicken();}
          }}
     
     
     private void NachSuedenGehen()
     {
         if (positionY<10-1)
         {labyrinth.mauerSetzen(positionX,positionY+1);
             if(labyrinth.mauer==false)
             {positionY=positionY+1;
             symbol.PositionYSetzen(positionY);
             NachSuedenBlicken();}
          }
      }
   
      void Unten()
     {
         if (positionY<10-1)
         {labyrinth.mauerSetzen(positionX,positionY+1);
             if(labyrinth.mauer==false)
             {positionY=positionY+1;
             symbol.PositionYSetzen(positionY);
             NachSuedenBlicken();}
          }
      }
     
     private void NachWestenGehen()
     {
         if (positionX>0)
         { labyrinth.mauerSetzen(positionX-1,positionY);
             if(labyrinth.mauer==false)
             {positionX=positionX-1;
             symbol.PositionXSetzen(positionX);
             NachWestenBlicken();}
         
         }
         
      }
   
     
     void Links()
     {
         if (positionX>0)
         { labyrinth.mauerSetzen(positionX-1,positionY);
             if(labyrinth.mauer==false)
             {positionX=positionX-1;
             symbol.PositionXSetzen(positionX);
             NachWestenBlicken();}
         
         }
         
      }
     
     
    void VorwaertsGehen()
    {
    {switch (blickrichtung)
        {case N:
            NachNordenGehen();
            break;
         case O:
            NachOstenGehen();
            break;
         case S:
            NachSuedenGehen();
            break;
         case W:
            NachWestenGehen();
            break;
        }}}
   
   
   
 
    public void keyPressed(KeyEvent e)
    {
        switch (e.getKeyCode())
        {
            case KeyEvent.VK_DOWN:
            {
                NachSuedenGehen();
                break;
            }
           
            case KeyEvent.VK_UP:
            {
                NachNordenGehen();
                break;
            }
           
            case KeyEvent.VK_RIGHT:
            {
                NachOstenGehen();
                break;
            }
           
            case KeyEvent.VK_LEFT:
            {
                NachWestenGehen();
                break;
            }
        }
    }});
 
   public void keyReleased(KeyEvent e) {}


        public void keyTyped(KeyEvent e) {}

   
   

   
}
```

mien problem ist. ich würde diesen "MAM PFI" gerne über tastatur steuern können. und habe dafür den ansatz mit dem keylistener usw. (ganz unten) aber es funktioniert nicht. kann mit jemand sagen wo der fehler ist und was ich  anders machen muss?


danke schon mal

greez little__beatle


----------



## Quaxli (6. Feb 2009)

Alles ganz anders 
Klick mal da links in meiner Signatur auf den Link für's Spieltutorial. Da kannst Du abgucken. Erst das zweite Beispiel verwendet einen KeyListener, aber guck Dir ruhig auch mal die Basics vom ersten Teil an.


----------



## little__beatle (6. Feb 2009)

hi danke
mein problem ist nur iwie imemrnoch das gleiche. habe das alles reingeschrieben doch das objekt reagiert imemrnochnicht auf den tastendruck. es bewegt sich nict nur nicht sondern im objektinspektor werden die boolean up,dow,left,right auch nicht geändert.
kansnt du mir vllt nur damit ich des verstehe mal erklären wie man einen keylistener startet.


----------



## Soulfly (7. Feb 2009)

Hmm du solltest schon mal richtig lesen... sorry aber isso.

Das was du da machst ist das Hinzufügen von einen KeyListener zu einem Object, was selber zwar als KeyListener dient ABER keine KeyListener verwalten kann bzw sie mit Event füttern kann.

Du brauchst zum Beispiel ein Fenster und dem fügst du den Listener hinzu.

Deine momentane Methode (zum verständnis jetzt veranschaulicht) 

mampfiobject.addKeyListener(mampfiobject) 


Funktionierende Methode mit einem GUI-Objekt:

frame.addKeyListener(mampfiobject)


Setzt dich besser nochmal genau mit Swing/Awt und EventHandling auseinander.


----------



## little__beatle (7. Feb 2009)

okay jtz versteh ich des ganze endlich.
danke nochmal auch für das tutorial hat mir sehr geholfen.


----------

