【发布时间】:2014-06-25 04:17:13
【问题描述】:
我想做的是创建一个如下所示的十六进制网格。
我可以画出十六进制,但不确定如何让它们错开。所以第一行应该是 (0,0) (0,1) (0,2) (0,3) 在图像和第二行应该是 (1,0) (1,1) (1,2) (1,3) 等行中的偶数十六进制总是交错向下。
目前我知道要使用的行数/列数
hexRows
hexColumns
我如何绘制十六进制是这样的,i 只是在绘制十六进制时对其进行编号。
DrawSolidHex(x,y,i);
当前代码如下所示
begin
hexcolumns := c;
hexrows := r;
i:=1; //first cube
x := 1; //default x,y,z values
y := 1;
z := 0;
while hexrows>0 do
begin
columnssave := hexcolumns ;
while hexcolumns >0 do
begin
DrawSoildHex(X,Y,i);
i:=i+1;
x := x + 1;
hexcolumns := hexcolumns -1;
end;
y:=y+1;
x:= 1;
z:=0;
hexcolumns := columnssave;
hexrows:= hexrows-1;
end;
totalhex := i;
目前使用此代码,它只会在一条直线上绘制十六进制 x,y,(1,1) (2,1) (3,1)..ect 我不确定如何添加偏移量,计算它们,并对其进行编码,使其错开行。
【问题讨论】:
-
我可以画出十六进制,但不确定如何让它们错开。这很奇怪。如果你能画出一个六边形,你就可以把它们都画出来。如果你画一个,你已经画出了所有邻居之间的共享线。所以你已经知道在哪里画邻居了。
-
是的,我知道在哪里画它们,但必须计算如何计算下一个 xy
-
你不懂。如果你能画一个,你就已经知道在哪里画所有的邻居了。您已经完成了计算。
-
我可以画一个,因为我可以告诉它在哪里画,我不知道在哪里告诉它画下一个与它刚刚画的相关的相邻的。
-
我告诉它在哪里画?这意味着什么?为了画一个六边形,你必须画 6 条线。那是对的吗。所以,你知道那 6 行在哪里。对?我无法理解您的断言,即您可以在不知道它在哪里以及线条在哪里的情况下绘制这个六边形。你怎么能画出这些线而不指定它们在哪里。
标签: delphi delphi-xe2 hexagonal-tiles