Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame绘制多个矩形_Python_Pygame_Drawing_Rect - Fatal编程技术网

Python pygame绘制多个矩形

Python pygame绘制多个矩形,python,pygame,drawing,rect,Python,Pygame,Drawing,Rect,我正在学习python。该应用程序的理念是有8个矩形,当单击它们时,它们表示二进制。每个矩形代表一位,将显示十进制等效值 我很难把它翻译成一个写得很好的应用程序,而不需要硬编码。我使用.fill硬编码了8个矩形,但我更喜欢使用一个自动完成的函数。我不想要完整的代码,我宁愿有人告诉我应该遵循的代码结构的正确方向。我是否应该使用一个类来启动一个新的矩形,然后使用一个带有for循环的render方法来运行一个矩形数组,如果是这样,我将如何在一行中显示矩形 要绘制矩形,我坚持使用display.fill

我正在学习python。该应用程序的理念是有8个矩形,当单击它们时,它们表示二进制。每个矩形代表一位,将显示十进制等效值

我很难把它翻译成一个写得很好的应用程序,而不需要硬编码。我使用.fill硬编码了8个矩形,但我更喜欢使用一个自动完成的函数。我不想要完整的代码,我宁愿有人告诉我应该遵循的代码结构的正确方向。我是否应该使用一个类来启动一个新的矩形,然后使用一个带有for循环的render方法来运行一个矩形数组,如果是这样,我将如何在一行中显示矩形

要绘制矩形,我坚持使用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\u value
功能更改矩形

我如何改变每个精灵的位置?我要他们一个接一个地排成一行。