Erste Schritte "Raumwechsel" bereitet Probleme

Waraffel

Mitglied
Hi,

ich habe ein kleines Problem und weis einfach nicht wie ich das beheben soll, ich hoffe ihr könnt mir helfen.

Habe vor einem Jahr in Java ein Textadventure geschrieben und wollte dies jetzt etwas aufarbeiten. Es werden halt feste Räume mit zugehörigen Items erstellt welche man jetzt statt über Texteingabe über Buttons wechseln soll. In der Textbasierten Version klappte dies ohne Probleme, habe die Grafiken auch bisher eingebunden bekommen und ebenso auch die Benutzeroberfläche. Beim umstellen der Befehlsgebung klappt es jedoch nicht so wie gedacht.

Einmal die Methode zum wechseln der Räume:
Java:
private void wechsleRaum(Befehl befehl)
        {
            String richtung = befehl.befehlswort;
            Raum naechsterRaum = aktuellerRaum.gibAusgang(richtung);
            if(naechsterRaum == null)
            {
                System.out.println("Fehler");
            }
            else
            {
                aktuellerRaum = naechsterRaum;
                ImageIcon icon = new ImageIcon(aktuellerRaum.beschreibung);
                JLabel center = new JLabel(icon);
            }
        }
Jeder Raum hat halt festgelegte Ausgänge welche hier angesteuert werden sollen. Zusätzlich halt das Bild (beschreibung) für den nächsten, bzw dann aktuellen Raum (bisher nur theoretisch, da ich den Wechsel halt nicht testen kann).

Hier ist jetzt die Abfrage des Buttons der gedrückt wurde:
Java:
private boolean eingabe(String a){
            if(a=="north"){
                wechsleRaum(a); 
            }
            else if(a=="south"){
                wechsleRaum(a);
            }
            else if(a=="west"){
                wechsleRaum(a);
            }
            else if(a=="east"){
                wechsleRaum(a);
            }
            else if(a=="Aktion"){
                center.setText(a);
            }
            else if(a=="Beenden"){
                System.exit(0);
            }
        }
Der hier resultierende Fehler ist das wechsleRaum
Code:
Befehl
erwartet, aber einen String geliefert bekommt, daher verständlich. Änder ich den String jedoch dahingehend funktionert der Listener nicht mehr:
Java:
private void addButtonListener(JButton b){
            b.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent ae){
                    eingabe(ae.getActionCommand());
                }
            });
        }
Dieser erwartet dann auch
Code:
Befehl
erhält aber nur java.lang.String

Da ich die Befehl-Klasse aus dem textbasierten Programm übernommen habe könnte es natürlich sein, dass diese komplett unnötig geworden ist. Jedenfalls läßt es die derzeitige Größe vermuten. ^^
Java:
class Befehl
{
    public String befehlswort;

    //erzeugen des Befehlsobjektes
    public Befehl(String wort)
    {
        befehlswort = wort;
    }

    //Gibt das Befehlswort aus
    public String gibBefehlswort()
    {
        return befehlswort;
    }
    
    public boolean istUnbekannt()
    {
        return (befehlswort == null);
    }
}

Gibt es eine einfache Lösung für dieses Problem, also dass der Raumwechsel möglich wird?
 
Ohne auf die Semantik zu achten ist mir schonmal das hier aufgefallen
beim drüberfliegen.

a=="north"

Strings vergleicht man mit .equal()

Auf jeden Fall kannste den Fehler schonmal verbessern.
 
Dieser Code erinnert mich verdächtig an Kapitel 7 aus dem Buch: "Java lernen mit BlueJ", lad dir die Lösungen einfach ausm Netz runter, Google ist dein Freund mein Lieber.

Du musst das Projekt nämlich zunächst ersteinmal Komplett dem Refactoring-Prozess unterziehen, dann geht deine Umsetzung wesentlich einfacher und ohne den ganzen "doppelten Code".
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben