pygame绘制多个矩形

时间:2018-12-06 22:00:13

标签: python pygame drawing rect

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

在不对所有内容进行硬编码的情况下,我很难将其转换为编写良好的应用。我使用.fill硬编码了8个rect,但是我更喜欢使用一个自动执行此功能的函数。我不希望有完整的代码,我希望有人指出我应该遵循的代码结构的正确方向。我应该使用一个类来启动一个新的rect,然后使用带有for循环的render方法来遍历矩形数组,如果是的话,我将如何在一行中显示这些矩形?

要绘制我要粘贴到display.fill()的矩形

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

1 个答案:

答案 0 :(得分:-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函数更改矩形。