我有一个随机生成的数字网格,大小为 gameSize
(用户输入),包含在 vector 的 vector 中。用户可以输入两个坐标 (x, y),以便将网格内的数字更改为预定义值,即“0”。
例如,用户输入 X:0 Y:0 和:
{9, 7, 9}
{9, 6, 8}
{5, 1, 4}
变成:
{0, 7, 9} <-- Changes position 0,0 to 0 (the predefined value)
{9, 6, 8}
{5, 1, 4}
我想弄清楚如何添加一个“撤消”功能,在该功能中提示用户是否要撤消他们的选择,如果是,则反转选择,以便位置 0,0 变回原始值(在此示例中为值 9)。我该如何实现?我知道我需要以某种方式记录以前的网格状态,但不知道如何做。
最佳答案
如果您只想能够“撤消”上次的更改,那么您可以简单地制作一个拷贝,即进行更改之前状态的备份。然后,如果用户想要“撤消”更改,则从备份复制到实际数据中。
对于更多级别的撤消,您可以拥有一堆拷贝。
如果数据很大,那么不是为每次更改都复制数据,而是存储实际更改的拷贝。然后,当用户想要“撤消”时,您可以执行与更改相反的操作。
示例:如果用户想用 Z 修改坐标 X、Y,则存储 X、Y 和 Z。然后在执行撤消时用 -Z 修改 X、Y。
关于C++ 撤消命令/反转到以前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487415/