请考虑以下内容:
目前,我正在编程一个非常基本的地牢生成器。现在,它是这样的:
生成任意长度的int [] []超数组。
使用for循环将房间放置在此超阵列(现在称为迷宫)中的随机坐标处,该循环用迷宫中的1填充房间的高度和宽度。出于游戏引擎的目的,0表示不可穿越(隔离墙),而1则表示玩家/敌人可穿越。
在0,0处启动一个完美的迷宫生成器,然后运行直到房间之间的所有空间都充满了走廊。
将房间连接到走廊,清除死角,剩下的是相互连接的房间系统。
赞
现在,我想对这些房间进行爵士装饰,因为它们只是扁平的矩形。我现在需要做的是找到一种在int超数组内部生成多边形的方法(坐标可能会做得很好,这不是问题),然后用1填充超数组中多边形的空间(我在那我遇到麻烦了。
答案 0 :(得分:0)
我正在尝试弄清楚如何“在整数数组中绘制线条”。 我发现的是,通过执行以下操作,我可以从一个点到另一点画一条线: 求点1和点2的宽度和高度(x1-x2和y1-y2的绝对值, 将宽度除以(height-1),然后从点1到点2,沿y轴单步移向点2,在x轴上按宽度/高度步移。 示例:
01000
01000
00100
00100
00010
00001
在这里我从(1,0)到(x,y)到(4,5) 如果我采用宽度和高度,我最终会得到 宽度= 3 高度= 5 如果我除以3/5,我最终得到0.6 因此,对于y轴上的每一步,我都会沿x轴进行0.6步(并覆盖结果值,因为我们只能将整数用作位置) 并以坐标结束
(1,0)
(1.6,1) -> (1,1)
(2.2,2) -> (2,2)
(2.8,3) -> (2,3)
(3.4,4) -> (3,4)
(4,5) -> (4,5)
您可以使用此线函数为多边形的每个坐标对绘制这些线
x = x1 + (|(y1-y)| * ( |(x1-x2)| / |(y1-y2)| ) * sign(x2-x1))
其中,x是每次迭代的当前x,沿着y轴的线 x1代表您的起始x位置,x2代表您的终止位置 y表示每次迭代的当前y(具体来说是循环中的实际计数器) y1和y2分别位于起始y和结束y位置。 和符号(x2-x1)可以帮助您确定,从起始位置向左还是向右移动。
使用此方法,您应该能够绘制多边形的轮廓,并希望以后可以更容易地填充它。
我希望这对您有所帮助 问候
编辑: 我们为每对连续的坐标绘制线,而不是每对坐标。 表示是否要从点p1,p2,p3,p4,p5绘制多边形 您会在p1到p2,p2到p3,p3到p4,p4到p5以及p5到p1画一条线
只是简短的笔记