微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 pygame 中绘制多行多列的矩形?

如何解决如何在 pygame 中绘制多行多列的矩形?

我正在尝试制作 Brick Breakout 游戏。但是,我在绘制砖块时遇到了问题。我实际上可以把它们全部画出来,但我正在寻找一种专业的方法来做到这一点,以使用更少的代码行。 这是我的一些代码,但没用:

pygame.draw.rect(screen1,brick_colors[b],(x1,y1,60,12))
pygame.draw.rect(screen1,(x2,(x3,(x4,(x5,(x6,(x7,(x8,12))

那么,是否有使用 for 循环的方法来完成这项工作? 注意:砖块应为 8 行,每行 8 块。

解决方法

使用嵌套循环:

no_of_rows = 8
no_of_cols = 8

x0,y0 = 20,20    # just for example
dx,dy = 70,16    # just for example

for row in range(no_of_rows):
    for col in range(no_of_cols):
        pygame.draw.rect(screen1,brick_colors[b],(x0 + col*dx,y0 + row*dy,60,12))

我建议列出块位置并从列表中的位置绘制块矩形。如果一个块被破坏,你所要做的就是从列表中删除该位置:

blocks = []
for row in range(no_of_rows):
    for col in range(no_of_cols):
        blocks.append((x0 + col*dx,y0 + row*dy))
for pos in blocks:
    pygame.draw.rect(screen1,(pos[0],pos[1],12))

这可以通过使用 pygame.Rect 对象进一步改进:

blocks = []
for row in range(no_of_rows):
    for col in range(no_of_cols):
        rect = pygame.Rect(x0 + col*dx,12)
        blocks.append(rect )
for rect in blocks:
    pygame.draw.rect(screen1,rect )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。