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)。或者,您可以只使用一个一维列表来存储布尔值,然后跟踪列表中的哪个元素是哪个元素。
我想做的是,如果单击了一个矩形,它就会被选中并显示文本,但如果再次单击它,则会取消选择并且文本消失。
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)。或者,您可以只使用一个一维列表来存储布尔值,然后跟踪列表中的哪个元素是哪个元素。