2 Spielfelder

feiste

Bekanntes Mitglied
Hey

also ich habe 2 Spielfelder in beiden kann man eine Figur steuern (1mal mit W,A,S,D ; 1mal mit Pfeiltasten)
nur leider ist es so dass man immer nur die Figur steuern kann bei der, das Spielfeld im Vordergrund ist.
Wie kann ich das machen dass ich beide steuern kann ?

Achso und wie ist den der Name der Pfeiltasten in Java?

danke
 

feiste

Bekanntes Mitglied
also meine Klasse dafür sieht so aus: (ist von meinem Lehrer)

Java:
import java.util.*;
import java.awt.event.KeyEvent;

public class KEYSTATE
{
    HashSet<String> set = new HashSet<String>();
    
    public KEYSTATE()
    {
    }
    
    public void add(KeyEvent keyEvent)
    {
        set.add(keyEvent.getKeyText(keyEvent.getKeyCode()));
    }
    
    public void remove(KeyEvent keyEvent)
    {
        set.remove(keyEvent.getKeyText(keyEvent.getKeyCode()));
    }
    
    public boolean IsPressed(String key)
    {
        return set.contains(key);
    }
}

und jetzt wenn sich meine figur bewegen soll mach ich es so:

Java:
if(keystate.IsPressed("D")
        {
            mario.SetzeX(0);
        }


wie muss ich es dann machen wenn ich mit den pfeiltasten die figur bewegen will ?
weil if(keystate.IsPressed("VK_RIGHT") funktioniert nicht.
und if(keystate.IsPressed(VK_RIGHT) auch nicht.
 

Volvagia

Top Contributor
Java:
import java.util.*;
import java.awt.event.KeyEvent;
 
public class KEYSTATE
{
    HashSet<String> set = new HashSet<String>();
    
    public KEYSTATE()
    {
    }
    
    public void add(KeyEvent keyEvent)
    {
        set.add(keyEvent.getKeyText(keyEvent.getKeyCode()));
    }
    public void addKeyCode(KeyEvent keyEvent)
    {
        set.add(String.valueOf(keyEvent.getKeyCode()));
    }
    
    public void remove(KeyEvent keyEvent)
    {
        set.remove(keyEvent.getKeyText(keyEvent.getKeyCode()));
    }
    public void removeKeyCode(KeyEvent keyEvent)
    {
        set.remove(String.valueOf(keyEvent.getKeyCode()));
    }
    
    public boolean IsPressed(String key)
    {
        return set.contains(key);
    }
    public boolean IsPressed(int key)
    {
        return set.contains(String.valueOf(key));
    }
}

addKeyCode/removeKeyCode und isPressed(int) verwenden. :)
 

feiste

Bekanntes Mitglied
dankee.

und dieses problem??

also ich habe 2 Spielfelder in beiden kann man eine Figur steuern (1mal mit W,A,S,D ; 1mal mit Pfeiltasten)
nur leider ist es so dass man immer nur die Figur steuern kann bei der, das Spielfeld im Vordergrund ist.
Wie kann ich das machen dass ich beide steuern kann ?
 

Volvagia

Top Contributor
Das liegt daran, dass nur der Komponent den Listener empfängt, der den Focus hat. Du könntest in einer statischen Collection alle Spielfelder speichern, und sobald einer den Listener reinbekommt ihm auch für alle anderen Felder aufrufen. (Auf rekursionen aufpassen.)
 

Neue Themen


Oben