Erstes RPG: KeyAdapter Problem

Status
Nicht offen für weitere Antworten.
T

ToNyXXL

Gast
Moin, ich bin dabei mein erstes kleines Spiel zu programmieren und bin nur auf ein Problem gestoßen! Hab vorher nur in der Schule mit Applets gearbeitet aba will jetzt attiv einsteigen und hab mich an Frames und richtige Klasse gewagt.
Mein Problem ist gerade, dass ich nicht weiter weiß, wie ich den KeyAdapter richtig verwenden soll, um meinen Array zu "bewegen"! Wäre nett wenn ihr Profis euch das mal anschaun könntet (auch wenns schwer fällt) und mit eventuell einen kleinen Tipp geben würdet. Ich denke mal das wird standard objekt oritierente Logik sein, die ich einfach noch net hab... *PHP Coder sei ;D*

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Start extends JFrame implements ActionListener
{
    public static void main(String[] args) 
    {
        // FRAME WIRD INITIALISIERT
        Start start = new Start("Das Spiel!");

        start.pack();
        start.setSize(1024,768); 
        start.setVisible(true);
    }
   
    Start(String titel) 
    {
        // TITEL WIRD GESETZT
        super(titel);
        
        // DESIGN WIRD AUF METALL LOOK GESTELLT
        try 
        {
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        }
        catch(Exception ex) 
        {
            System.err.println("Fehler bei LookandFeel\n"); 
        }
        
        int level=0;
        
        Tastatureingabe tasta = new Tastatureingabe();
        DasSpielfeld spielfeld = new DasSpielfeld(tasta);
        
        add(spielfeld); //JPanel DasSpielfeld adden
        
        setBackground(Color.yellow);
    } 
    
    public void paint(Graphics g)
    {
        // GEPAINTET WIRD IM JPanel DasSpielfeld
    }
    
    // BEI KLICK AUF X FENSTER SCHLIESSEN
    public void actionPerformed(ActionEvent e) 
    {
        String quelle = e.getActionCommand();
            
        if(quelle.equals("Programm beenden"))
            System.exit(0); 
        return; 
    }
    
    
}
    class DasSpielfeld extends JPanel
    {
        // SPIELFELD GRÖSSE
        int s_width=100;
        int s_height=100;
        // FELDGRÖSSE
        int feldgröße=30;
        // POSITIONSBESTIMMUNGEN
        int pos_x, pos_y;
        // ARRAY HILFSVARIABLE
        int Rect_x=0, Rect_y=0;
        // Spielerposition
        int spieler_x, spieler_y;
        
        public DasSpielfeld(KeyListener tasta)
        {
            addKeyListener(tasta); // RICHTIG SO? 
        }
        
        //BEWEGUNGSABLÄUFE START
        public void up()
        {
            spieler_y--;
        }
        
        public void down()
        {
            spieler_y++;
        }
        
        public void left()
        {
            spieler_x--;
        }
        
        public void right()
        {
            spieler_x++;
        }
        // BEWEGUNGSABLÄUFE ENDE
        
        public void paint(Graphics g)
        {
            g.translate(200,200);
            g.fillRect(0,0,1000, 1000);
            g.setColor(Color.red);
            
            // MITTELPOSITION WIRD BERECHNET
            pos_x=(spieler_x-390)/feldgröße;
            pos_y=(spieler_y-270)/feldgröße;
            
            // SPIELERDATEN WERDEN BERECHNET *WIP*
            Rect_x=pos_x;
            Rect_y=pos_y;
            
            // ALPHA GRUNDGERÜST WIRD GEZEICHNET
            for(int y=0; y<(s_height); y++)
            {
                for(int x=0; x<(s_width); x++)
                {   
                    g.drawRect(x*feldgröße, y*feldgröße, feldgröße, feldgröße);
                    g.drawString(Rect_x+" "+Rect_y, x*feldgröße, y*feldgröße+feldgröße);
                    g.fillRect((13*feldgröße), (9*feldgröße), feldgröße, feldgröße);
                    
                    Rect_x++;
                }
                Rect_x=pos_x;
                Rect_y++;
            }
            Rect_y=pos_y;
        }
    }

    class Feld
    {
        // FÜR SPÄTER
    }

    class Tastatureingabe extends KeyAdapter
    {
       String action;
       
        public void keyPressed(KeyEvent event)
        {
            Frame source = (Frame)event.getSource();
            if (event.getKeyCode() == KeyEvent.VK_UP) 
            {
                // Hier weiß ich nicht weiter
            }
            if (event.getKeyCode() == KeyEvent.VK_DOWN) 
            {
                // Hier weiß ich nicht weiter
            }
            if (event.getKeyCode() == KeyEvent.VK_LEFT) 
            {
                // Hier weiß ich nicht weiter
            }
            if (event.getKeyCode() == KeyEvent.VK_RIGHT) 
            {
                // Hier weiß ich nicht weiter
            }
        }
        
        public String gibAction()
        {
            return action;
        }
    }

Vielen vielen DANK!!
 

Eriol

Mitglied
Na da hab ich den Source code mal gelesen ;)


Code:
addKeyListener(tasta); // RICHTIG SO?
//JA ;)

jetzt in deinen KeyAdapter folgendes einfügen:

Code:
class Tastatureingabe extends KeyAdapter
    {
       String action;
       
        public void keyPressed(KeyEvent event)
        {
            Object source = event.getSource();
            if(source instanceof Tastaureingabe) //prüfen ob der Typ der source richtig ist
           {
             Tastatureingabe dasEingabeObjekt = (Tastatureingabe)source; //typecasting machen
             if (event.getKeyCode() == KeyEvent.VK_UP)
             {
                // Hier weiß ich nicht weiter      //aber ich ;)
               dasEingabeObjekt.up(); //hier einfach die methode von der Source aufrufen
                  //wenn hier nichts sichtbares passiert, nicht vergessen die Gui aufzufordern sich zu aktualisieren
                 // z.B. mit dasEingabeObjekt.validate() oder .repaint()
             }
             if (event.getKeyCode() == KeyEvent.VK_DOWN)
             {
                // Hier weiß ich nicht weiter
             }
             if (event.getKeyCode() == KeyEvent.VK_LEFT)
             {
                // Hier weiß ich nicht weiter
             }
             if (event.getKeyCode() == KeyEvent.VK_RIGHT)
             {
                // Hier weiß ich nicht weiter
             }
            }
        }
       
        public String gibAction()
        {
            return action;
        }
    }

Das sollte bei den andren if abfragen mit den entsprechenden Methodenaufrufen genau so funktionieren.
Man kann das ein wenig anders lösen, aber so gehts auch *g* (hoffentlich, wenn nicht melde dich, dann hab ich was vergessen... nobody's perfect ;) )
 
T

ToNyXXL

Gast
Hey danke, habs nun schon anders gelöst, und zwar in der klasse Tastatureingabe wird immer ne variable gesetzt, und die klasse wird nun erst von ner unterklasse erzeugt und dann wird diese variable auch immer daher abgerufen, ffunktioniert auch - aba so is sicher besser dankeschön =)
 

masta // thomas

Bekanntes Mitglied
Immer schön dran denken, bescheid zu sagen, wenn etwas erledigt ist. Evtl. hätte Eriol in der Zeit etwas schöneres machen können, hm? ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines chars entfernen Java Basics - Anfänger-Themen 1
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
H java erstes projekt Java Basics - Anfänger-Themen 502
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
M Mein erstes Programm Java Basics - Anfänger-Themen 3
V Erste Schritte Erstes Project - Hilfe Java Basics - Anfänger-Themen 9
T erstes kleines Programm Java Basics - Anfänger-Themen 17
M Erste Schritte Erstes Programm mit Compiler öffnen Java Basics - Anfänger-Themen 4
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
M Erstes Textrollenspiel funktioniert...nicht. Java Basics - Anfänger-Themen 2
L Erstes Projekt aus zwei Projekten Java Basics - Anfänger-Themen 1
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
A Erstes Programm: Polynom-Klasse Java Basics - Anfänger-Themen 15
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
W Erste Schritte erstes Programm Java Basics - Anfänger-Themen 40
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
W Erstes eigens Programm - Klassen- und Schüler Verwaltungsprogramm Java Basics - Anfänger-Themen 5
M Erstes "sinnvolles" Programm Java Basics - Anfänger-Themen 11
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
R [CODECHECK] Erstes Programm Java Basics - Anfänger-Themen 6
T Erstes Zeichen aus String löschen Java Basics - Anfänger-Themen 8
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
M Erstes Programm und Fehlermeldung Java Basics - Anfänger-Themen 5
B erstes Java-Applet Java Basics - Anfänger-Themen 7
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
C Erstes Arraylist Element in for Schleife überspringen Java Basics - Anfänger-Themen 6
G Erstes Java-Programm Java Basics - Anfänger-Themen 10
E Erstes Programm - Problem mit Exception Java Basics - Anfänger-Themen 3
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
A erstes größeres Projekt Java Basics - Anfänger-Themen 14
P Mein erstes JAR-File Java Basics - Anfänger-Themen 8
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G erstes element einer haspmap Java Basics - Anfänger-Themen 5
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
M erstes Zeichen ersetzen Java Basics - Anfänger-Themen 2
C Konstruktor wird nicht als erstes aufgerufen! Java Basics - Anfänger-Themen 11
L Suche Verbesserungsvorschläge für mein erstes Programm Java Basics - Anfänger-Themen 34
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
O mit Regex erstes Zeichen überprüfen Java Basics - Anfänger-Themen 3
A Mein erstes Programm Java Basics - Anfänger-Themen 6
D JNDI-DataSource erstes mal benutzen Java Basics - Anfänger-Themen 4
T Erstes Programm Java Basics - Anfänger-Themen 7
B Erstes Programm :-/ Java Basics - Anfänger-Themen 3
C Erstes kleines Problem - string in chat ? Java Basics - Anfänger-Themen 9
M Erstes Element einer Enumeration? Java Basics - Anfänger-Themen 6
A Erstes Buch durchgelesen, wie weiter vorgehen? Java Basics - Anfänger-Themen 8
K Runnable oder Keyadapter läuft falsch Java Basics - Anfänger-Themen 4
M Kleine Konsole mit Threads + KeyAdapter Java Basics - Anfänger-Themen 6
H KeyAdapter/KeyListener zum laufen kriegen Java Basics - Anfänger-Themen 3
F KeyAdapter registrieren Java Basics - Anfänger-Themen 5
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben