gpt4 book ai didi

performance - 确定网格游戏中是否没有剩余移动的最有效方法?

转载 作者:行者123 更新时间:2023-12-04 19:09:43 27 4
gpt4 key购买 nike

我有一个简单的游戏,你可以在网格中垂直或水平移动一个游戏棋子 1 个正方形,以制作一排三个相同类型的棋子。

游戏网格宽 8 格,高 7 格,我想找到最有效的方法来检查是否没有剩余的移动会导致连续 3 次移动。

到目前为止我所拥有的是:

Grid checking plan

http://i.imgur.com/jY6wJvZ.png

我的想法是进行水平测试,我只需要检查 C 列与任一侧的工件类型不同,而 F 列的类型相同。

垂直 - 我认为第 2 行只需要与第 3 行进行比较以确保没有任何匹配,第 5 列应该与第 4 行和第 6 行进行比较以进行匹配。

因此,如果这些都不匹配,那么就不可能再有任何 Action 了?

我不确定这是否是最有效的方法,或者它是否可能会错过可能的比赛,任何比我大脑更好的人都可以指出我正确的方向吗?

最佳答案

您的检查并不能保证没有移动。例如,假设左上角是:

      *     *
a a b c . . . .
* c c a b . . . .
b b d a . . . .
. . . . . . . .
* . . . . . . . .
. . . . . . . .
. . . . . . . .

实际上,C 列中的任何单元格都不等于其左侧或右侧,并且第 2 行中的任何单元格都不等于其上方或下方。然而,我们可以交换 C1 和 C2 来创建一个 3 排。

正如@Patashu 所建议的,在这里,一个天真的解决方案可能是最好的,尤其是对于概念化,例如如果其他人要阅读您的代码。我会一次跟踪三个单元格(在有界 FIFO 队列中),首先按行,然后按列,当三个中的两个匹配时,检查 2 到 6 个周围的单元格,这些单元格可能会被交换以填充第三个。例如,
  . . . . . . . .
. . * . . * . .
. * . a a . * .
. . * . . * . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

或者
  . . . . . . . .
. . . . * . . .
. . . a . a . .
. . . . * . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

或者
  . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . * . .
. . . . * . a a

如果其中任何一个 * 'ed 单元格匹配(例如 a ),然后您知道另一个 3-in-a-row 是可能的。

关于performance - 确定网格游戏中是否没有剩余移动的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16348519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com