我正在编写自己的'魔方'应用程序。主类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