pygame 绘制多个矩形

pygame Drawing multiple rectangles

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

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

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

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

这是您可以使用的模板:

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 函数更改矩形。