Fehler in gui.Field?

user379
Erstie
Erstie
Beiträge: 13
Registriert: 3. Jan 2014 11:26

Fehler in gui.Field?

Beitrag von user379 »

Beim testweisen Spielen meines Miner-Programms ist mir ein sonderbarer Fehler aufgefallen.
Ich habe das Programm gestartet und bin mit dem Aufzug soweit nach unten gefahren, wie es nur möglich ist. Dies habe ich öfters wiederholt.
Öfters war dann erwartungsgemäß an der unteren Wand Schluss. Manchmal hat sich aber ab einer bestimmten Position nur noch das gelbe Aufzug-Rechteck, nicht aber die Figur des Players, weiterbewegt. Ähnlich war es dann auch beim Graben, die Felder unterhalb dieser Höhe wurden zwar erwartungsgemäß aufgedeckt, die Figur des Miners hat sich aber nicht weiter nach unten bewegt.

Um das Problem genauer zu untersuchen, habe ich darauf meine setPositionOfPlayer-Methode verändert. Am Ende der Methode habe ich ein System.out.println-Befehl hinzugefügt, der den Rückgabewert der getPositionOfPlayer-Methode ausgibt.
Darauf habe ich dieselben Untersuchungen wieder angestellt und festgestellt, dass das Problem nur dann auftritt, wenn height_of_grid größer als width_of_grid ist. Die Höhe der Position, ab der sich die Figur des Players nicht mehr weiter bewegte, entsprach dann der Breite des Spielfeldes(-1). Zudem fiel mir auf, dass die Position des Spielers aber weiterhin korrekt gesetzt wurde.
Ergänzung: Bei mir variieren Breite und Höhe des Spielfeldes innerhalb bestimmter Grenzen, ein Zufallsgenerator wird zum Generieren der Werte verwendet.
Da der Aufzug und das Graben ordnungsgemäß funktionierten, nur die Figur sich nicht weiterbewegte, hab ich darüber nachgedacht, ob der Fehler im gestellten Framework liegen könnte.

Bei näheren Betrachtungen viel mir Zeile 74 der Klasse "Field" in der Package "gui" auf:

Point playerPos = new Point(Math.min(model.getPositionOfPlayer().width, model.getWidthOfGrid()-1), Math.min(model.getPositionOfPlayer().height, model.getWidthOfGrid()-1));

Könnte es sein, dass die Zeile folgendermaßen lauten sollte? Wurden möglicherweise Höhe und Breite vertauscht?

Point playerPos = new Point(Math.min(model.getPositionOfPlayer().width, model.getWidthOfGrid()-1), Math.min(model.getPositionOfPlayer().height, model.getHeightOfGrid()-1));

Nachdem ich diese Änderung vorgenommen hatte, konnte ich den Fehler nicht mehr reproduzieren.

steffen12
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 205
Registriert: 14. Okt 2009 16:28

Re: Fehler in gui.Field?

Beitrag von steffen12 »

Hi,

die Veränderung die du vorgenommen hast erscheint mir plausibel. Du könntest recht haben.
5seconds wird sich das bestimmt mal genauer ansehen.

VG

Benutzeravatar
5seconds
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 155
Registriert: 27. Apr 2013 10:44

Re: Fehler in gui.Field?

Beitrag von 5seconds »

Sehr gut aufgepasst! Das ist wirklich ein Fehler in der GUI, Sorry. Jetzt wo du es verändert hast, sollte es funktionieren.

user379
Erstie
Erstie
Beiträge: 13
Registriert: 3. Jan 2014 11:26

Re: Fehler in gui.Field?

Beitrag von user379 »

Vielen Dank. Dann ist dieses Problem gelöst. Fehler ist nicht wieder aufgetreten.

Antworten

Zurück zu „Archiv“