如何在网格中绘制一行字符(嵌套列表)

2024-06-26 11:16:24 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个wxh大小的网格,按以下方式生成

self.grid = [ ['-'] * self.w ] * self.h

我希望在所述网格的两点之间“画”一条字符的“线”。下面的代码就是我想出的

^{pr2}$

其中point()函数只需用char填充网格中的一个点。在

这就像一个魅力的直线和完美的对角线。它也适用于“弯曲”的线,在某种意义上它不会抛出错误,但它看起来不像两点之间的一条线,更像是。。。我不知道,一根曲棍球棒。在

例如,给定10x7网格和

line( 'X', (1,1), (5,9) )

我明白了

----------
-X--------
--X-------
---X------
----X-----
-----XXXXX
----------

我想要的可能是更像

----------
-X--------
---X------
-----X----
-------X--
---------X
----------

我如何做到这一点,同时不打破它为直线和完美的对角线?我需要两段不同的代码来处理这两种情况,还是一种算法可以同时处理这两种情况?在


Tags: 函数代码self网格方式情况字符直线
1条回答
网友
1楼 · 发布于 2024-06-26 11:16:24

如果您坚持自己编程的话,您应该使用Bresenham's line algorithm。此外,请注意按如下方式初始化网格:

grid = [ ['-'] * self.w ] * self.h

因为编辑了相同列表的self.h个副本:

^{pr2}$

使用

grid = [['-'] * self.w for ignored in xrange(self.h)]

或者是Numpy数组。在

相关问题 更多 >