我有一个2D游戏板,可随着向板上添加图块而扩展。磁贴只能在上,下,左和右位置与现有磁贴相邻。
因此,我认为菱形螺旋矩阵将是存储木板的最有效方法,但我找不到将x,y坐标转换为1d数组索引或反向操作的方法。
喜欢这种布局
X -3 -2 -1 0 1 2 3
Y 3 13
2 24 5 14
1 23 12 1 6 15
0 22 11 4 0 2 7 16
-1 21 10 3 8 17
-2 20 9 18
-3 19
瓦片1始终位于位置0,瓦片2始终位于1,2,3或4,瓦片3始终位于1到12之间,等等。
所以我需要一个从X,Y到索引,再从索引回到原始X和Y的算法。
任何人都知道如何执行此操作,或者推荐另一种适合我需要的空间填充算法。我可能会使用Java,但希望使用某种语言中立的语言。
谢谢
答案 0 :(得分:0)
从问题说明中我可以理解,不能保证瓷砖将在侧面均匀地填充。例如:
X -3 -2 -1 0 1 2 3
Y 3 6
2 3 4 5
1 1
0 0 2
-1
因此,我认为菱形矩阵不是最佳选择。 我建议将它们存储在哈希图中,例如实现2个字母单词的字典。 另外,您需要更加具体地满足您的要求。就像,您是否会优先考虑时间的复杂性?还是您想要一个快速的访问时间,而不是那么在乎内存的使用。
重要提示:
另外,