[英]How can I leave some kind of a mark in two-dimensional array that will tell the program to do something in this location
我正在开发一款小游戏,该游戏在我们使用的棋盘上使用二维阵列。 我实现了“ Undo
方法,每次单击“按钮”都会逐步返回历史记录。 问题是在某些情况下,“ Undo
方法必须在特殊情况下执行其他操作,并且在游戏过程中可能会多次发生。
我知道一种方法是存储“ x”和“ y”(它们在板上的位置),当我到达那里时,如果我们稍后再回到这里,则需要做一些其他事情。 然后在“ Undo Action Listener
中添加if
,如果位置我们回到.equals
存储的x
和y
任何一个,则执行该操作。 但是我要说的是效率.equal
,我想知道是否有一种方法可以留下标记来告诉程序,当我回到这里时,我创建的Boolean
将.equal
true并且可以执行该操作。
我不明白为什么if
语句效率低下。 我将在undo
操作中添加恒定时间(如果只有equals
方法具有恒定时间),因此操作的big-o时间不会被修改。
但是,如果您更喜欢另一种方法,则可以在每个单元格中保存一个对象。 该object
应具有一个布尔属性,您在执行undo
操作时将对其进行检查。
我更喜欢使用if语句,但是取决于您。
您正在使用二维数组-什么是数组? 考虑到您的图片中有字母,我假设使用String [] []之类的东西。
但是,您也可以自己创建一个数组。 类似于“单元”类。 给这个类两个成员-首先是有效载荷(也就是您当前拥有的数据),其次是布尔值作为标记。
单独关注。 董事会不必也保存其历史记录。 记录动作,并有一种方法可以将它们反向播放。
关系数据库正是这样来满足回滚的。 他们会记录所有更改,并可以撤消其中的所有内容。 日志通常是更改数据状态的快照。 在您的情况下,实现它的一种简单方法是存储每个板的快照,而撤消将简单地将历史板换成当前板。
这看似“沉重”,但它是大型高事务处理率数据库执行此操作的方式,并且实现起来更简单且防弹,因为您不需要知道如何撤消特定操作。 此外,这意味着董事会需要了解的更少,实际上,他们甚至不需要知道可以撤消这些事务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.