我想要做的是,如果单击了一个矩形,它会被选中并显示文本,但如果再次单击它,则会取消选择它并且文本消失。
list_of_rect是一个坐标列表(x,y,width,height),表示矩形的位置和大小。
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)
编辑:我想的一个想法就是跟踪点击的矩形。但我不确定如何实现这个
答案 0 :(得分:2)
尝试列出一个列表,如下所示:
rects_clicked = []
然后,在您的活动代码中:
if j not in rects_clicked:
#undisplay text
rects_clicked.append(j)
else:
#display text
rects_clicked.remove(j)
答案 1 :(得分:1)
我会使用包含布尔值的2d列表。单击矩形时,我会说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)。或者,或者你可以只有一维列表来存储布尔值,然后跟踪列表中的哪个元素是哪个元素。