好的,所以我有一个二维矢量的字符,我称之为网格。让我们说它是70 x 30.当网格创建时,它会自动用'x'
填充每个位置我有一个显示网格的功能。所以我调用这个函数,并在控制台上显示一个70x30的x网格。
我想要调用的另一个函数基本上用不同的char替换网格的某些x,y坐标处的char。这些点并非完全随机/分散。我基本上从网格边缘的一个点开始,并将锯齿形线条绘制到另一个边缘。所有点都是预定的。有很多要点,所以手动做它似乎效率低下。
以下是我的想法:
基本上为每个可能的场景做了那个乏味的过程.. 当然有一个更容易和更简单的方式大声笑。任何建议将不胜感激。谢谢!
答案 0 :(得分:0)
如果可以通过具有地图(如用于关卡编辑器或其他固定模式)来预先确定点,则制作x / y坐标的字典,使其成为平铺的内容。迭代字典并进行每次替换。
如果这些点不是预先确定的,而是遵循一个模式,例如直线或blob,那么编写一个绘制直线/ blob /的方法并反复调用它。该方法决定替换哪些瓷砖并替换它们。
顺便说一下,做这样的2D检查和处理有一个技巧,它被称为'delta',例如xdelta = -1,ydelta = 0是west,xdelta = 1,ydelta = 1是东北。通过使用delta,您可以使用不同的增量运行两次,四次或八次函数,只需使用delta的方向就可以向不同的方向移动,而不需要自己尝试所有八个方向 - 也可以使用delta如果你想要驱动边界检查,因为你不能走向你没有进行的方向。然后你可以进一步列举所有方向,反转方向的函数,将方向转向90/45度(如果枚举它很简单,你只需在枚举中加2或1并返回新方向)等等,现在处理非常简单。所以我可能会有像
这样的东西 function drawLine(int xstart, int ystart, int xdelta, intydelta)
从xstart,ystart开始,用O替换tile,将xdelta添加到x,将ydelta添加到y,用O替换tile等,直到它从边缘掉落。