我正在編寫自己的'魔方'應用程序。主類Cube
具有18點旋轉的方法:LinkedList撤銷/重做功能<Action>實施
- RotateAxisXClockWise,RotateAxisXAntiClockWise
- RotateAxisYClockWise,RotateAxisYAntiClockWise
RotateAxisZClockWise,RotateAxisZAntiClockWise
RotateUpperFaceClockWise,RotateUpperFaceAntiClockWise
- RotateFrontFaceClockWise,RotateFrontFaceAntiClockWise
- RotateRightFaceClockWise,RotateRightFaceAntiClockWise
- RotateBackFaceClockWise,RotateBackFAceAntiClockWise
- RotateLeftFaceClockWise,RotateLeftFaceAntiClockWise
- RotateDownFaceClockWise,RotateDownFaceAntiClockWise
是,它們可以以對被接合與一參數方向(例如RotateFrontFace(Direction direction)
)但現在這個似乎適當。
我想實現撤銷/重做功能,因爲所有方法都有相同的簽名(沒有輸入參數,無效返回類型),他們可以保存在LinkedList數據結構中。所以每次調用其中一種旋轉方法時,它都會添加到鏈接列表中。
如果我們從LinkedList的開始處開始(儘管還沒有嘗試過)並且朝向結尾前進,那麼這將工作得很好,因此每次輪換將按照首先執行的方式執行。
但是如何撤消?如果我從頭到尾遍歷列表,則應該調用相反的方法(例如,應該調用RotateFrontFaceClockWise
,RotateFrontFaceAntiClockWise
)。任何想法如何實現這一點?優雅? :)
這個數據模型是怎麼樣的?可以舉個例子嗎? – sventevit 2011-03-01 19:39:21