为iOS在卡坦定居者中放置数字瓦片
我正在为Catan的iOS版编写代码,目前我的数据块都在matix中。现在,我尝试将数字附加到每个磁贴上。但是我被困在正确的算法上。在黑板上写数字牌有具体的规则。这些是: 1它们必须按照图像中显示的预定义顺序进行 你必须从黑板的一角开始 3你必须逆时针绕着电路板旋转,向中心旋转 你必须跳过沙漠地砖 由于电路板上只有6个位置可以开始放置瓷砖,我意识到将这6个解决方案手工编码到我的数据网格中并不困难。但是游戏中有一种变化,棋盘变大了,所以我认为值得探索一种算法为iOS在卡坦定居者中放置数字瓦片,ios,algorithm,matrix,Ios,Algorithm,Matrix,我正在为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艺术:您的帖子对找到角点非常有帮助。我唯一剩下的问题是逆时针方向遍历矩阵。假设我所有的瓷砖都在一个标准矩阵中排列,我如何逆时针旋转?只要有一个方向向量,代表移动它的方向。当您碰到水或已经有数字的瓷砖时,旋转矢量。