我正在学习python。该应用程序的想法是有8个矩形,当单击它们时,它们会关闭或打开,代表二进制。每个矩形代表一位,并显示十进制等效值。
在不对所有内容进行硬编码的情况下,我很难将其转换为编写良好的应用。我使用.fill硬编码了8个rect,但是我更喜欢使用一个自动执行此功能的函数。我不希望有完整的代码,我希望有人指出我应该遵循的代码结构的正确方向。我应该使用一个类来启动一个新的rect,然后使用带有for循环的render方法来遍历矩形数组,如果是的话,我将如何在一行中显示这些矩形?
要绘制我要粘贴到display.fill()的矩形
我考虑将每个矩形的属性硬化为一个元组的元组,然后使用for循环渲染每个元组,这是一个好方法吗?
答案 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
函数更改矩形。