当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 决定网格游戏中是否没有移动的最有效方法?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我有一个简单的游戏,你可以在一个网格中垂直或水平移动1平方的游戏块,以形成一排相同类型的三个. 游戏网格是8个方格宽,7个方格高,我想找到最有效的方法来检查是否没有剩下的移动
我有一个简单的游戏,你可以在一个网格中垂直或水平移动1平方的游戏块,以形成一排相同类型的三个.

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

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

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

我的想法是水平测试我只需要检查列C与任何一侧不同的片段类型和列F的相同.

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

那么,如果这些都不匹配那么就不可能有更多动作了?

我不确定这是否是最有效的方式,或者如果它可能错过可能的比赛,那么有没有比我更好的大脑的人请指出我正确的方向?

您的支票并不保证没有动作.例如,假设左上角是:

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

实际上,C列中没有单元格等于其左侧或右侧,并且第2行中的单元格不等于其上方或下方.然而,我们可以交换C1和C2来创建一个3-in-a-row.

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

. . . . . . . .
  . . * . . * . .
  . * . a a . * .
  . . * . . * . .
  . . . . . . . .
  . . . . . . . .
  . . . . . . . .

要么

. . . . . . . .
  . . . . * . . .
  . . . a . a . .
  . . . . * . . .
  . . . . . . . .
  . . . . . . . .
  . . . . . . . .

要么

. . . . . . . .
  . . . . . . . .
  . . . . . . . .
  . . . . . . . .
  . . . . . . . .
  . . . . . * . .
  . . . . * . a a

如果这些* ed单元格中的任何一个匹配(例如a),那么你就知道另一个3-in-a-row是可能的.

网友评论