Java 创建六边形网格图案

Java 创建六边形网格图案,java,Java,我有这个漂亮的六边形模式,我需要用java实现它。我已经有了一个表示一个六边形的类“Tile”和一个表示每个Tile坐标的类“Vector”。每个平铺对象都有自己的向量 现在我只想把所有的瓷砖添加到一个列表中。但要做到这一点,我需要创建全部37个。这就是我现在被困的地方。当然,我可以全部手工创建,但这不仅会很乏味,容易出错,而且也不是很优雅 你们谁能告诉我我能做什么 我想你需要做的第一件事就是把你的瓷砖连接起来。给他们六个参考,每个潜在的邻居一个——西北、东北、东、东南、西南和西部。然后,给定任


我有这个漂亮的六边形模式,我需要用java实现它。我已经有了一个表示一个六边形的类“Tile”和一个表示每个Tile坐标的类“Vector”。每个平铺对象都有自己的向量

现在我只想把所有的瓷砖添加到一个列表中。但要做到这一点,我需要创建全部37个。这就是我现在被困的地方。当然,我可以全部手工创建,但这不仅会很乏味,容易出错,而且也不是很优雅


你们谁能告诉我我能做什么

我想你需要做的第一件事就是把你的瓷砖连接起来。给他们六个参考,每个潜在的邻居一个——西北、东北、东、东南、西南和西部。然后,给定任何瓷砖,您可以轻松地遍历其所有邻居。创建了
平铺
对象的此图形后,将它们指定为
向量
实例

假设每个
平铺的
向量
是唯一的,下一步是创建一个函数,将这些
向量
实例映射到笛卡尔坐标。在这一点上,您可以绘制点,以查看是否在屏幕上的正确空间中放置瓷砖

从你发布的链接来看,听起来你好像在尝试制作某种游戏(很酷!)。如果是这种情况,那么在使
vector2Cart()函数正常工作后,您还有两件事要做:

  • 正确渲染六边形瓷砖,而不仅仅是点或正方形

  • 创建逆向
    cartToVector()
    方法,该方法采用笛卡尔坐标,并返回与占据屏幕该部分的
    Tile
    对应的向量。通过这种方式,您可以单击屏幕并对
    磁贴执行操作


  • 要构建网格,请利用几何体/对称性。从深度角度考虑网格,其中中心深度为0,每个连续层的深度都在增加。上面的网格深度为3。
    每个标高都有与其深度相关的恒定属性(每个标高有6条边,每条边的长度与深度成比例)

    以下代码将有助于构建网格:

    public class HexagonGrid {
    
        public static void main(String[] args) {
    
           int size = 3;
           buildHexagonGrid(size);
       }
    
        private static void buildHexagonGrid(int size) {
           int totalTiles = 0;
           int depth = 0;
           // TODO:  Build the center tile here
           totalTiles++;    // Center
           System.out.printf("Current size (after depth=%d) = %d\n", depth, totalTiles);
           for (depth=1; depth<=size; depth++) {
              for (int side=1; side<=6; side++) {
                 for (int tile=1; tile<=depth; tile++)
                    // TODO: Build the Tiles along current side/depth
                    // There is a clear relationship between x/y/z and depth/side/tile
                    totalTiles++;
              } 
                 System.out.printf("Current size (after depth=%d) = %d\n", depth, totalTiles);
           }
        }
    }
    

    最简单的方法似乎是使用两个嵌套循环,一个在行上,另一个在一行内的平铺上。我不确定我是否从列表开始。您需要与原点保持一定距离(曼哈顿距离)内的所有瓷砖。我想你需要考虑到这个形状的实际几何结构。我收回这一点。这不是曼哈顿的距离。在每个轴上从原点最多移动三步+-3。两个嵌套循环的问题似乎是,我需要两个嵌套循环的7倍。每行一个。目前看来,这是最好的选择。但也许“完美”的解决方案就在那里:)你需要进一步的帮助吗?如果您愿意,我可以添加到我的答案中,以显式创建所有平铺(分配x/y/z)?
    Current size (after depth=0) = 1
    Current size (after depth=1) = 7
    Current size (after depth=2) = 19
    Current size (after depth=3) = 37