【问题标题】:pygame Drawing multiple rectanglespygame 绘制多个矩形
【发布时间】:2018-12-08 08:08:21
【问题描述】:

我正在学习 python。该应用程序的想法是有 8 个矩形,当单击它们时会关闭或打开表示二进制。每个矩形代表一个位,将显示等效的十进制数。

如果不对所有内容进行硬编码,我很难将其转换为编写良好的应用程序。我使用 .fill 对 8 个矩形进行了硬编码,但我更喜欢使用自动执行此操作的函数。我不想要完整的代码,我宁愿有人指出我应该遵循的代码结构的正确方向。我是否应该使用一个类来启动一个新的矩形,然后使用一个带有 for 循环的渲染方法来遍历一个矩形数组,如果是这样,我将如何连续显示这些矩形?

要绘制我坚持使用 display.fill() 的矩形

我考虑将每个矩形的属性硬核到一个元组的元组中,然后用一个 for 循环渲染每个,这是一个好方法吗?

【问题讨论】:

    标签: python pygame drawing rect


    【解决方案1】:

    这是您可以使用的模板:

    import pygame
    import sys
    
    def terminate():
        pygame.quit()
        sys.exit()
    
    pygame.init()
    
    black = (0,0,0)
    white = (0,0,0)
    
    clock = pygame.time.Clock()
    fps=30
    
    screen_height = 520
    screen_width = 650
    screen = pygame.display.set_mode((screen_width,screen_height)
    
    class Rect(pygame.sprite.Sprite):
        def __init__(self,x,y,width,height,color,value):
            super().__init__()
            self.image = pygame.Surface([width, height])
            self.image.fill(color)
            self.rect = self.image.get_rect()
            self.rect.x = x
            self.rect.y = y
            self.value = value
        def change_value(self,color,value):
            self.image.fill(color)
            self.value=value
    
    rects = pygame.sprite.Group()
    
    rect = Rect(50,50,100,100,black)
    rects.add(rect)
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                terminate()
    
        screen.fill(white)
        rect.draw(screen)
    
        pygame.display.flip()
    
        clock.tick(fps)
    

    使用组将允许您一次绘制所有矩形。您可以使用change_value 函数更改矩形。

    【讨论】:

    • 我将如何改变每个精灵的位置?我希望它们一个接一个地对齐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多