我有一组rects,它们连续显示 . 我希望他们在点击时更改颜色,直到再次单击它们
到目前为止我有这个代码来创建精灵:
class DrawableRect(pygame.sprite.Sprite):
def __init__(self,color,width,height,value=0):
super().__init__()
self.image = pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.value = value
self.x = 0
self.y = 0
def change_value(self,color,value):
self.image.fill(color)
self.value=value
def DrawRects(start_x, start_y, rect_spacing, colour_list):
current_x_pos = start_x
for rect_num in range(0,8):
rect = DrawableRect(colour_list[rect_num], boxW, boxH)
rect.rect.x = current_x_pos
rect.rect.y = start_y
current_x_pos = current_x_pos + rect.rect.width + rect_spacing
rects.add(rect)
rects.draw(screen)
应用程序的想法是每个矩形代表一个位,当按下它时在0和1之间交替,每个位的组成在某处显示十进制等效 .
我读到群组是无序的,因此索引不起作用,是真的吗?
1 回答
这里's an example I'已根据您的目的进行了修改 . 我在精灵组中有一堆精灵(彩色矩形),当我按下鼠标按钮时,我改变*与鼠标指针碰撞的任何精灵的颜色 .
这里's the code, you'可能最感兴趣的是
change_color()
方法和MOUSEBUTTONUP
事件处理代码 .如果您有任何疑问,请告诉我 . 显然这不会对精灵进行行对齐,我想你已经掌握了这一点 . 我建议你将所有的屏幕绘图操作放在一个地方,这样你的代码就会更清晰 .
*新颜色是从短名单中随机化的,因此有14%的可能性不会从起始颜色变化 .