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:
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:
Der hier resultierende Fehler ist das wechsleRaum
erwartet, aber einen String geliefert bekommt, daher verständlich. Änder ich den String jedoch dahingehend funktionert der Listener nicht mehr:
Dieser erwartet dann auch
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. ^^
Gibt es eine einfache Lösung für dieses Problem, also dass der Raumwechsel möglich wird?
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);
}
}
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);
}
}
Code:
Befehl
Java:
private void addButtonListener(JButton b){
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
eingabe(ae.getActionCommand());
}
});
}
Code:
Befehl
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?