如何在c#中为棋盘游戏创建撤销功能?
我发现我用c#forms开发的游戏很难实现撤销功能。我想在游戏屏幕上有一个按钮,当点击时,它会反转玩家刚才的移动如何在c#中为棋盘游戏创建撤销功能?,c#,C#,我发现我用c#forms开发的游戏很难实现撤销功能。我想在游戏屏幕上有一个按钮,当点击时,它会反转玩家刚才的移动 有人知道我该怎么做吗?有人告诉我,堆栈是实现这一点的最佳方式,但我不确定如何实现它 您可以将游戏事件包装为具有方法Do()和Undo()的操作 让我们以绘画程序为例。用户在给定坐标上绘制线,将LineDrawnEvent与所有相关数据放在堆栈上,并调用Do()方法,该方法实际上在画布上绘制一条线。当用户单击“撤消”按钮时,从堆栈中弹出项并调用undo()方法,该方法在LineDraw
有人知道我该怎么做吗?有人告诉我,堆栈是实现这一点的最佳方式,但我不确定如何实现它 您可以将游戏事件包装为具有方法
Do()
和Undo()
的操作
让我们以绘画程序为例。用户在给定坐标上绘制线,将LineDrawnEvent
与所有相关数据放在堆栈上,并调用Do()
方法,该方法实际上在画布上绘制一条线。当用户单击“撤消”按钮时,从堆栈中弹出项并调用undo()
方法,该方法在LineDrawnEvent
中应删除用户绘制的线
您还可以使用类似于IProgramAction
和Do()
和Undo()
方法的接口,这样您就可以在同一堆栈中拥有不同的事件,例如CircleDrawnEvent
和RectangularDrawnEvent
代码中的堆栈将类似于
public Stack<IProgramAction> ProgramStack { get; set; }
公共堆栈程序堆栈{get;set;}
GoogleC 35;
和stack
如何,并获得类似的参考。使用通用的。