Pygame - 如何检查我的矩形是否已被点击?

Pygame - How do I check if my rect has already been clicked?

我想做的是,如果单击了一个矩形,它就会被选中并显示文本,但如果再次单击它,则会取消选择并且文本消失。

list_of_rect 是表示矩形位置和大小的坐标(x、y、宽度、高度)列表。

render_display 只显示带有文本的屏幕。

if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
    x, y = event.pos
    for i in range(len(list_of_rect)):
        j = list_of_rect[i]
        if j[0][0] <= x <= (j[0][0] + j[0][2]) and j[0][1] <= y <= \
                (j[0][1] + j[0][3]):
                render_display(screen, text)

编辑:我想的一个想法是跟踪被点击的矩形。但是我不确定如何实现这个

尝试创建一个列表,如下所示:

rects_clicked = []

然后,在您的活动代码中:

if j not in rects_clicked:
    #undisplay text
    rects_clicked.append(j)
else:
    #display text
    rects_clicked.remove(j)

我会使用包含布尔值的二维列表。单击矩形时,我会说 list[xCoordOfRectangle][yCoordOfRectangle] = !list[xCoordOfRectangle][yCoordOfRectangle]。然后,在绘图方法中,我会说:

for i in list:
    for j in i: 
        if(j): 
            #information drawing function goes here
        else:
            #Solid/Empty Rectangle drawing function goes here

请注意,您需要将 list 初始化为每个矩形都为 false。另请注意,如果矩形未按矩形方式排列,则需要按以下方式使用数字:1 已分配,true; 2 已赋值,为假; 3 未分配(有点像 null)。或者,您可以只使用一个一维列表来存储布尔值,然后跟踪列表中的哪个元素是哪个元素。