我正在尝试实施一个程序来解决"解锁我"难题。对于那些不了解它的人,"取消阻止我"是一个滑块拼图,你有一个1x1,1x2,2x1和2x2盒子的棋盘,目标是通过一个开口将红色框移出棋盘。
我的问题是我如何代表董事会成员国?我在互联网上搜索并找到了代表这样状态的建议。
例如这个董事会:Board State
我可以理解这种表示是如何工作的。当我想移动其中一个盒子时,问题就来了。我如何检查一个盒子是1x1,1x2,2x1还是2x2,以检查是否可以移动?
关于我如何做到这一点的任何想法,或任何其他更容易的"表示?
答案 0 :(得分:3)
我愿意:
如果这是一个解锁拼图,您需要在网格外滑动一个框,您还需要:
这应该允许您根据需要执行任何计算。给定框所在的左上角单元格,框的尺寸以及知道框内占用的单元格,您可以计算是否发生了碰撞。
上述表示也支持任意形状,而不仅仅是矩形和正方形。
答案 1 :(得分:0)
您可以始终拥有与“网格”相同尺寸的数组,退出的特殊值为-1,空方格为0,每个块都有该块的编号。
然后,您可以使用Check函数,该函数采用块编号和方向,并且对于具有块编号的每个当前单元格作为值检查,相邻单元格具有相同的块编号或者是<1。
移动功能会将所需方向的值设置为零,稍微关注顺序事项,您可以从第一个开始,将所需方向的单元格设置为所需数字,将当前方格设置为0.最小的ifs和几个循环。