基本上,我有一个NumPy阵列的矩形存储他们的颜色和位置。我希望能够比较我的鼠标位置,点击矩形的位置,从数组中获取索引或对象本身。
我必须遍历数组中的每个正方形并比较项的坐标吗?
该结构看起来如下:
Cube[Face][Horizontal-Line][Square] = np.array([colour, pygame.Rect(x, y, size, size)])最有效的方法是什么。我正在考虑使用colliderect()方法,但我不知道如何实现它。
https://i.stack.imgur.com/oQyxn.png
如果你需要更多的数据,我会提供。
发布于 2021-01-03 16:50:41
我建议创建一个矩形列表:
rect_list = [rect1, rect2, rect3 ...]鼠标位置(在下面的mouse_pos中)是一个点,而不是矩形。使用collidepoint查找矩形与点的交集:
collide_rect_index = -1
for i, rect in enumerate(rect_list):
if rect.collidepoint(mouse_pos):
collide_rect_index = i
break或者,您可以使用collidelist()
测试矩形是否与长方形序列中的任意矩形发生碰撞。返回第一次碰撞的索引。如果没有发现冲突,则返回索引-1。
在鼠标位置创建一个1x1矩形,并在矩形列表中找到碰撞矩形的索引:
mouse_rect = pygame.Rect(*mouse_pos, 1, 1)
collide_rect_index = mouse_rect.collidelest(rect_list)但是,如果有网格,则可以通过将鼠标位置(row )除以瓷砖大小(tile_size)来找到平铺索引(mouse_pos、column)。行和列必须是整数。因此,您必须使用地板分割(//)操作符:
column = mouse_pos[0] // tile_size
row = mouse_pos[1] // tile_sizehttps://stackoverflow.com/questions/65552238
复制相似问题