繁体   English   中英

我如何使用二进制列表在PyGame中绘制方块?

[英]How could I use a binary list to draw squares in PyGame?

我想知道我是否可以使用1和0的列表绘制图像,其中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]]

我没有尝试过很多因为我在互联网上看不成功,显然无法为字符串分配整数。

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))

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

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

例如:

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调整为屏幕大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM