如何在PyGame中使用二进制列表绘制正方形?

时间:2019-01-05 15:47:43

标签: python pygame

我想知道是否可以使用一和零的列表来绘制图像,其中1表示

pygame.draw.rect(DISPLAY_SURF,(0,0,0), (0,0,10,10))

,0表示空格。看起来像这样:

blockMap = [
    [0,1,1,0,0,0,1,1,0],
    [0,1,1,0,0,0,1,1,0],
    [0,0,0,0,0,0,0,0,0],
    [1,0,0,0,0,0,0,0,1],
    [0,1,1,1,1,1,1,1,0],
    [0,0,0,0,0,0,0,0,0]]

我没有尝试太多,因为我在整个Internet上浏览都没有成功,并且显然无法为字符串分配整数。

blockMap = [
    [0,1,1,0,0,0,1,1,0],
    [0,1,1,0,0,0,1,1,0],
    [0,0,0,0,0,0,0,0,0],
    [1,0,0,0,0,0,0,0,1],
    [0,1,1,1,1,1,1,1,0],
    [0,0,0,0,0,0,0,0,0]]

in blockMap if 1:
    pygame.draw.rect(DISPLAY_SURF, (0,0,0), (0,0,10,10))
else:
    pygame.draw.rect(DISPLAY_SURF, ((BG_COLOUR)), (0,0,10,10))

这应该在白色背景上以黑色显示笑脸,但绝对不是。我知道这是完全错误的,我已经尝试了很久了,那只是我希望工作的一次非常绝望的尝试。

1 个答案:

答案 0 :(得分:2)

您正在为绘图函数提供常量参数。您需要根据矩阵更改坐标。

例如:

square_size = 30 # example
for y, row in enumerate(blockMap):
    for x, val in enumerate(row):

        upper_left_point = x * square_size, y * square_size
        upper_right_point = (x + 1) * square_size, y * square_size
        lower_left_point = x * square_size, (y + 1) * square_size
        lower_right_point = (x + 1) * square_size, (y + 1) * square_size

        pointlist = [upper_left_point, 
                    upper_right_point,
                    lower_right_point,
                    lower_left_point]

        pygame.draw.polygon(Surface, color, pointlist, width=0)

这是一个非常基本的示例,因此在使用它之前,请尝试完全理解该代码。在实际开始可视化任何内容之前,您将需要了解这些概念。

别忘了将square_size调整为屏幕尺寸。