getQuote-Methode

Gast
Gast

getQuote-Methode

Beitrag von Gast »

Hey Leute,
ich wüsste gerne wann die Gui diese Methode aufruft um die Quoten bei der Bank zu berechnen. Bei mir kommt es nämlich zum Doppelaufruf, wenn ich in den Laden gehe und dann etwas verkaufe.
Und manchmal wird die Methode auch gar nicht aufgerufen zum Beispiel wenn ich erst in den Shop gehe und dann in die Bank. Da sind alle Preis = 0.

Und liege ich richtig in der Annahme, dass in der getQuote-Methode auch die Preise für die Werkzeuge rein geschrieben werden müssen?

mfg Kai

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

Re: getQuote-Methode

Beitrag von 5seconds »

Hallo,

die GUI ruft die Quoten immer ab, nachdem eine Taste gedrückt wurde, wenn der Controller fertig mit execute ist und der Spieler sich dann in dem Gebäude (Shop, Bank) befindet.
Daher wird nach einem Einkauf/Verkauf die Preise neu abgerufen, denn die GUI hat kein "Gedächnis", das wissen könnte, ob der Spieler davor schon im selben Gebäude war. Im Shop wird jeweils 7x getQuote aufgerufen (für jedes Item 1x -> Also ja, hier sollen die Preise für die Werkzeuge zurückgegeben werden), in der Bank 3x (Gold, Silber, Platin).

Wenn ich erst in den Shop gehe und dann in die Bank, kann ich keinen Unterschied zu sonst feststellen, alle Preise werden einmal abgerufen. Prüfe am besten nochmal nach, ob du auch für jedes Item einem Preis zurückgibst.

Viele Grüße

Gast
Gast

Re: getQuote-Methode

Beitrag von Gast »

Danke für die schnelle Antwort :)

Das Hilft mir weiter Danke :)

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

Re: getQuote-Methode

Beitrag von steffen12 »

Hallo allerseits,

zugegeben, die Methode int getQuote(String item) im IModel ist nicht so gut dokumentiert, sorry.
Daher noch einmal zur Verdeutlichung, die Methode wird seitens der GUI und Tests grundsätzlich verwendet um den aktuellen Preis bzw. Wert eines Items zu erfragen, sei es nun ein Werkzeug (Shop) oder ein Mineral (Bank). Es ist dabei zu beachten, dass die Quotes (oder Wechselkurse) von Mineralien nicht konstant sind und daher zwischen zwei Zugriffen durch die Methode per Zufall neu gesetzt werden müssen. Man überlege sich einen günstigen Zeitpunkt um diese Aktualisierung durchzuführen.

Viele Grüße

midstar
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 172
Registriert: 29. Dez 2013 17:00

Re: getQuote-Methode

Beitrag von midstar »

Ehm, zur absoluten Verwirrung widersprecht ihr euch gerade? :P

5Seconds: Die Gui ruft nach jedem ausführen der execute() die Quotes ab wenn du dich in einem Gebäude befindest.
Steffen12: Du musst dir einen günstigen zeitpunkt aussuchen zum abrufen.

Soll ich mir eins davon aussuchen? :P

Oder beantwortet 5Seconds nur durch zufall die vorgabe von Steffen in dem Fall?^^

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

Re: getQuote-Methode

Beitrag von steffen12 »

Hi midstar,

was ich sagen wollte ist nicht, dass man sich den Zeitpunkt des Abrufs durch die Methode getQuote aussuchen soll, sondern den Zeitpunkt an dem man die Aktualisierung der Quotes im Model vornimmt. Ich habe den Post dahingehend geändert, um hoffentlich Missverständisse zu vermeiden.

VG

gast
Gast

Re: getQuote-Methode

Beitrag von gast »

ich weiß nicht ob es jemanden schon vorher aufgefallen ist, aber ich hab bemerkt, dass die getQuote Methode von der gui jedesmal erneut aufgerufen wenn ich in der Bank bin und nochmal E drücke.
Ich rufe nirgendwo die methode getQuote auf, also kann es nicht an meinem subcontroller liegen. Das Problem ist, das man während man in der Bank ist, die Wechselkurse mit jedem Tastendruck <E> erneut zu seinem Gunsten ändern kann.

Kann das jemand mal überprüfen und schauen ob bei ihm/ihr dasselbe passiert?

Gast
Gast

Re: getQuote-Methode

Beitrag von Gast »

Bei mir passiert das nicht. Du kannst das bei dir wahrscheinlich vermeiden, indem du beim drücken der Taste E überprüfst, ob sich der Player in der Bank befindet. Wenn ja, wirfst du eine InvalidLocationException, weil E in der Bank ja nicht bewirken soll. Wenn das passiert, bevor irgendwelche anderen Methoden aufgerufen werden könnten, sollten keine neuen Kurse erstellt werden.

gast
Gast

Re: getQuote-Methode

Beitrag von gast »

ich bin da etwas voreilig an die Sache rangegangen. Ich hab erst später gemerkt, dass getQuote bei dem execute() aufruf von der gui selbst aufgerufen wird, daher haben sich die Kurse bei jedem Tastendruck geändert.
Haqb jetzt einfach meine eigene methode geschrieben die die Kurse auf mein Kommando aktualisiert, jedesmal wenn taste <E> gedrückt wird und player nicht in der bank ist.
Läuft jetzt wies soll :)

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

Re: getQuote-Methode

Beitrag von 5seconds »

Noch zur Ergänzung: Wie bereits oben geschrieben, wird nach jedem Tastendruck in der Bank getQuote aufgerufen. Daher sollen die Quoten nur beim Betreten der Bank neu berechnet werden und nicht bei jedem Methodenaufruf.

TobiTobske
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 15. Jan 2014 20:50

Re: getQuote-Methode

Beitrag von TobiTobske »

Hallo,
ich habe auch das Problem, dass bei mir in der Bank die Kurse bei jedem Tastendruck neu erstellt werden. Ich werfe zwar bei allen möglichen Tasten eine InvalidLocationException, die mir auch auf dem Bildschirm angezeigt wird, dennoch aktualisieren sich immer die Raten für die Mineralien.
Das passiert übrigens auch, wenn ich eine Taste benutze, die gar nicht im Spiel benutzt wird (F7, Alt, 9, T,...).
5seconds hat geschrieben:Noch zur Ergänzung: Wie bereits oben geschrieben, wird nach jedem Tastendruck in der Bank getQuote aufgerufen. Daher sollen die Quoten nur beim Betreten der Bank neu berechnet werden und nicht bei jedem Methodenaufruf.
Das leuchtet mir ein. Ich habe aber Schwierigkeiten, das so zu implementieren.
So wie ihr das Problem beschreibt, scheint die GUI ja nach jedem Tastendruck (sprich nach jedem Aufruf der execute-Methode) die getQuote() Methode aus dem Model aufzurufen. Das muss auch eigentlich so sein, weil ich die Methode niemals aufrufe.
Meine Überlegung wäre jetzt, der GUI zu "verbieten", diese Methode aufzurufen, außer wenn der Miner die Bank betritt. Das würde eine Änderung an der GUI bedeuten, die ja eigentlich möglichst unverändert bleiben soll.

Meine Frage also an euch: Ist es sinnvoll/möglich, das so zu lösen? Oder habt ihr bessere Vorschläge, wie ich da rangehen soll?

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

Re: getQuote-Methode

Beitrag von steffen12 »

Hi.

@TobiTobske
Du könntest z.B. alle Werte die von der GUI so abgefragt werden, im Model an einem zentralen Ort speichern. Die Methode getQuote sollte nur lesenden Zugriff darauf haben. Die zufällige Erzeugung neuer quotes für die Bank kannst du dann in einer anderen Methode vornehemen.

VG

TobiTobske
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 15. Jan 2014 20:50

Re: getQuote-Methode

Beitrag von TobiTobske »

Vielen Dank, steffen12,

das hat ja tatsächlich so funktioniert! :lol:

wolltemallesen
Gast

Re: getQuote-Methode

Beitrag von wolltemallesen »

wie wird denn was berechnet? aus der Aufgabenstellung finde ich keine Infos dazu, vielen Dank!!!

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: getQuote-Methode

Beitrag von SophiaLi1 »

Hey,

siehe Aufgabenstellung 5.2.5.2 (Seite 35). Dort findest du die Intervalle. Wie genau der Preis dann ist, wird zufällig festgelegt, es gibt keine Formel.

Antworten

Zurück zu „Archiv“