Java Anfänger, das Feedback darüber, wie am besten schätzen würde, ein Problem zu nähern, die wir in Isolation bin auf .....Verwendung von Java-Stack, um die Methode zu erkennen, ruft
Den Versuch, ein Grundspiel zu bauen , wo sich ein Spieler auf einem Gitter/Brett bewegt. Benutze Up/Down/Links/Right-Methoden (zB public void playerMovesUp() usw.) und setze die Undo/Redo-Move-Funktionalität ein, so dass ein Spieler die x Anzahl der Schritte nachvollziehen und die X-Nummer zu jedem beliebigen Zeitpunkt während des Spiels wiederholen kann .
Haben nach Wegen gesucht, dies zu tun, d. H. Um die Reihenfolge der Auf/Ab/Links/Rechts-Methodenaufrufe aufzuzeichnen, und dann beide in umgekehrter Reihenfolge erneut aufzurufen (rückgängig zu machen) und dann zu wiederholen.
Eine Stapel- oder Warteschlangensammlung scheint logisch .... und ich habe auch in den Java-Stapelspeicher geschaut, der die Reihenfolge der Funktionsaufrufe speichert, und gerade über java.lang.Thread.getStackTrace() gelesen.
Aktuelle Gedanken ..... Wenn ich diese vier Methoden in einen Thread isoliere, dann könnte ich java.lang.Thread.getStackTrace() verwenden, um ein Array zurückzugeben, und getMethodName() aufrufen, um dann irgendwie anwendbar zu nennen Methoden in Reihenfolge?
Ist es auch möglich, eine Warteschlange/einen Stapel von Methodenaufrufen zu speichern?
Ich fühle mich wie ich bin auf dem richtigen Weg, aber der letzte Vorschlag scheint ein bisschen chaotisch/unlogisch! Irgendwelche Hinweise/Ratschläge würden geschätzt werden.
Java 'Stack' - https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html – brso05
normalerweise würde man die Aktionen in verschiedenen Klassen mit dem Befehlsmuster entwerfen, um Undo zu implementieren. (siehe http://stackoverflow.com/questions/49755/design-pattern-for-undo-engine) –
Speichern Sie Ihre Bewegungen in einem "Stack" dh "rechts" "links" "oben" "runter" ... dann Wenn du rückwärts gehen willst, nimm einfach das oberste Element des 'Stack' und mache das Gegenteil. 'if (topElement.equalsIgnoreCase (" right ")) {moveLeft();}'. – brso05