Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为iOS在卡坦定居者中放置数字瓦片_Ios_Algorithm_Matrix - Fatal编程技术网

为iOS在卡坦定居者中放置数字瓦片

为iOS在卡坦定居者中放置数字瓦片,ios,algorithm,matrix,Ios,Algorithm,Matrix,我正在为Catan的iOS版编写代码,目前我的数据块都在matix中。现在,我尝试将数字附加到每个磁贴上。但是我被困在正确的算法上。在黑板上写数字牌有具体的规则。这些是: 1它们必须按照图像中显示的预定义顺序进行 你必须从黑板的一角开始 3你必须逆时针绕着电路板旋转,向中心旋转 你必须跳过沙漠地砖 由于电路板上只有6个位置可以开始放置瓷砖,我意识到将这6个解决方案手工编码到我的数据网格中并不困难。但是游戏中有一种变化,棋盘变大了,所以我认为值得探索一种算法 如何实现这一点,您有什么想法吗?您想做

我正在为Catan的iOS版编写代码,目前我的数据块都在matix中。现在,我尝试将数字附加到每个磁贴上。但是我被困在正确的算法上。在黑板上写数字牌有具体的规则。这些是:

1它们必须按照图像中显示的预定义顺序进行

你必须从黑板的一角开始

3你必须逆时针绕着电路板旋转,向中心旋转

你必须跳过沙漠地砖

由于电路板上只有6个位置可以开始放置瓷砖,我意识到将这6个解决方案手工编码到我的数据网格中并不困难。但是游戏中有一种变化,棋盘变大了,所以我认为值得探索一种算法


如何实现这一点,您有什么想法吗?

您想做的将涉及矩阵中平铺条目之间的几何关系

您需要一种存储和查询该信息的方法

人们开发了几种方法来为六边形指定坐标:

有一种方法可以实现你想要的,在我的头顶上,就是每个十六进制都有6个指向其邻居的“指针”。当然,这些指针实际上可能是数组中的索引

您可以通过注意到一个“角”十六进制将有3个“空”邻居来检测它。然后你可以从那里逆时针穿过,记住你已经去过的地方

回应评论更新

假设对于给定的十六进制,我们存储了我描述的6个邻居

在本次讨论中,我们将这些邻居命名为A-F

我们逆时针分配这些,因为这对我们来说很方便

以图形方式:

          A
        _____
   B   /     \   F
      /       \
     (         )
      \       /
   C   \_____/   E

          D
对于“角”十六进制,我们可能有:

          A
        _____
   B   /     \   NULL
      /       \
     (         )
      \       /
   C   \_____/   NULL

          NULL
因此,如果我们看这个十六进制,并在其周围列出邻接信息,我们有:

A、 B,C,空,空,空,A,B,C

一旦我们在一行中找到3个空点,我们就知道下一个点应该指向我们的起始方向。在这种情况下,我们应该从“A”方向开始

另一个例子:

          NULL
        _____
 NULL  /     \   NULL
      /       \
     (         )
      \       /
   C   \_____/   E

          D
和以前一样,我们从顶部开始列一个清单

空,空,C,D,E,空,空,空,空,C

一旦我们找到3个空值,下一个就是我们的起始方向-‘C’

从那里沿着同一个方向盘旋前进应该是相当直接的,而不是字面上的-哈-哈


PS:感谢快速ascii艺术:

您的帖子对找到角点非常有帮助。我唯一剩下的问题是逆时针方向遍历矩阵。假设我所有的瓷砖都在一个标准矩阵中排列,我如何逆时针旋转?只要有一个方向向量,代表移动它的方向。当您碰到水或已经有数字的瓷砖时,旋转矢量。