问题描述
如何使用 John Zelle 的 graphics.py
模块检查两个盒子之间的碰撞?
编辑:
我找到了一种方法来查找具有 x,y,width,height 的任意两个类之间的冲突。它有点凌乱,但它可以完成工作:
def collided(self,collider):
if self.x < collider.x + collider.width and\
self.x + self.width > collider.x and\
self.y < collider.y + collider.height and\
self.y + self.height > collider.y:
return True
return False
如果有人有更好的方法,将不胜感激!
解决方法
这是一个小演示程序,它说明了一个相当简洁的方法——它包含一个名为 intersect()
的函数,它检查 graphics
模块的 Rectangle
类的两个实例是否相交。
这样做有点棘手,因为用于定义 Point
的两个 Rectangle
不需要是它的右下角和左上角,{{ 1}} 函数需要。为了解决这个问题,我们使用了一个名为 intersect()
的辅助函数来使其传递的每个参数都是这种情况。
canonical_rect()