Java acemi, .....Java Stack Kullanımı algılamak için en iyi ben izolasyon üzerinde çalıştığım bir sorunu yaklaşım konusunda geribildirim takdir ediyorum
temel bir oyunumu oluşturmak için çalışılıyor aramaları Bir oyuncu bir ızgara/tahta etrafında hareket eder. Yukarı/aşağı/sola/sağa yöntemleri (örn. Public void playerMovesUp() vb) var ve geri al/yinele hareket işlevselliğini uygulamaya koyması gerekiyor, böylece bir oyuncu x adımını tekrar izleyebilir ve daha sonra oyun sırasında herhangi bir noktada x numarasını tekrar alabilir .
Bunu yapmak için, örneğin yukarı/aşağı/sol/sağ yöntem çağrılarının sırasını kaydetmek ve sonra her ikisini de ters sırayla (geri al) yeniden çağırmak ve sonra yeniden yapmak için yollar aradık.
Yığın veya sıra toplama mantıklı görünüyor .... ve ayrıca java.lang.Thread.getStackTrace() hakkında okudukları java yığın belleğini de işlev çağrılarının sırasını saklıyorlar.
Geçerli düşünceler ..... Bu dört yöntemi tek bir iş parçacığına ayırırsam, bir diziyi döndürmek için java.lang.Thread.getStackTrace() yöntemini kullanabilir ve bir şekilde getMethodName() öğesini arayabilir, sonra da bir şekilde uygulanabilir sırayla yöntemler?
Ayrıca, bir sıra/yöntem çağrısı yığını depolamak mümkün mü?
Doğru yolda olduğumu hissediyorum, ama son öneri biraz dağınık/mantıksız görünüyor! Herhangi bir işaretçi/tavsiye takdir edilecektir.
Java 'Yığını - https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html – brso05
genellikle, biri uygulamak için Komut-Desenini kullanarak farklı Sınıflardaki eylemleri tasarlar. (bkz. http://stackoverflow.com/questions/49755/design-pattern-for-undo-engine) –
Hareketlerinizi "Stack" yani "right" "left" "yukarı" "aşağı" olarak kaydedin ... geriye doğru hareket etmek istediğinizde, sadece 'Stack' öğesinin üst öğesini tut ve tersini yap. 'Halinde (topElement.equalsIgnoreCase) ("sağ") {MoveLeft();} '. – brso05