我已经检查了很多帖子,例如这里的帖子,但我认为他们没有我想要的东西。我想为游戏 2048 创建一个合并函数,并且我希望它的算法尽可能通用:它应该适用于传统的 4x4 2048,以及不太常见的 3x3、5x5 等。我也想只使用最基本的函数,比如 if-else(我实际上是在使用汇编语言在微处理器中编码,所以我不能在 python 中使用任何花哨的例程或函数)。有没有高效、优雅的解决方案?
我从更简单的 3x3 版本开始,对于向右滑动,我只是从右侧开始检查空瓷砖,然后检查相邻瓷砖是否有相同的数字。我最终有 8 个不同的案例,一旦我发现它属于哪个案例,我就可以进行移动/合并。这样做的问题是,我还需要找出 4x4 和 5x5 的可能情况,而且问题很快就会变得非常复杂。也很难重用为 3x3 编写的代码来处理 4x4 和 5x5。
我还尝试检查空图块,相同编号的图块,从最右边的图块开始(再次向右滑动),然后循环一次(对于更大尺寸的网格,可能需要循环两次以上?)这种方法应该适用于任何游戏大小的数量(3x3、4x4、5x5 等),但它似乎有点低效,我怀疑有一些更好的方法可以做到这一点。
那么在游戏 2048 中是否有优雅的检查和合并方法?