我制作了一个小程序来为 astar 算法设置动画。如果你看图像,有很多黄色的汽车在四处移动。它们随时可能发生碰撞,可能只是其中一个或全部可能只是愚蠢地相互碰撞。
如何检测所有这些碰撞?我如何找出哪辆车撞到了另一辆车?
我想处理每次碰撞的方式是让他们撞车,或者让一辆车停下来,让另一辆车计算围绕停止的汽车的路线。
更便宜的解决方案是使用该itertools
模块仅碰撞汽车组合:
import itertools
for c1 in cars:
collides_environment(c1)
for c1, c2 in itertools.combinations(cars):
collides(c1, c2)
如果你使用这种方法,你只会碰撞成对的汽车,并且不会碰撞汽车。
如果您有汽车类,并且汽车列表中的所有实例:
for c1 in cars:
collides_environment(c1)
for c2 in cars:
collides(c1,c2)
您正在使用 pygame,汽车或多或少是一个正方形。对于碰撞检查,您可以使用以下功能collideRect
: http: //www.pygame.org/docs/ref/rect.html#Rect.colliderect