Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当存在>;时,如何处理多个精灵碰撞;10个雪碧?_Python_Sprite_Pygame_Collision - Fatal编程技术网

Python 当存在>;时,如何处理多个精灵碰撞;10个雪碧?

Python 当存在>;时,如何处理多个精灵碰撞;10个雪碧?,python,sprite,pygame,collision,Python,Sprite,Pygame,Collision,我正在制作一个小程序来制作astar算法的动画。如果你看这张图片,有很多黄色的汽车在四处行驶。它们可以在任何时刻碰撞,可能只是其中一个或全部,可能只是愚蠢地相互碰撞 如何检测所有这些碰撞?我如何找出哪辆车与另一辆车相撞 我想处理每次碰撞的方法是要么让他们撞车,要么让一辆车停下来,让另一辆车计算一条绕着停下来的车的路线 如果您有car类以及cars列表中的所有实例: for c1 in cars: collides_environment(c1) for c2 in cars:

我正在制作一个小程序来制作astar算法的动画。如果你看这张图片,有很多黄色的汽车在四处行驶。它们可以在任何时刻碰撞,可能只是其中一个或全部,可能只是愚蠢地相互碰撞

如何检测所有这些碰撞?我如何找出哪辆车与另一辆车相撞

我想处理每次碰撞的方法是要么让他们撞车,要么让一辆车停下来,让另一辆车计算一条绕着停下来的车的路线


如果您有car类以及cars列表中的所有实例:

for c1 in cars:
    collides_environment(c1)
    for c2 in cars:
        collides(c1,c2)

你使用的是pygame,汽车或多或少都是方形的。对于碰撞检查,如果您有car类以及cars列表中的所有实例,则可以使用函数
collide rect

for c1 in cars:
    collides_environment(c1)
    for c2 in cars:
        collides(c1,c2)

你使用的是pygame,汽车或多或少都是方形的。对于碰撞检查,您可以使用功能
collideRect

更便宜的解决方案是使用
itertools
模块仅碰撞车辆组合:

import itertools

for c1 in cars:
    collides_environment(c1)

for c1, c2 in itertools.combinations(cars):
    collides(c1, c2)

如果使用此方法,您将只碰撞一对汽车,而不会碰撞汽车本身。

更便宜的解决方案是使用
itertools
模块仅碰撞汽车组合:

import itertools

for c1 in cars:
    collides_environment(c1)

for c1, c2 in itertools.combinations(cars):
    collides(c1, c2)

如果使用此方法,您将只碰撞一对汽车,而不会碰撞汽车本身。

我实际上是这样做的,遍历整个列表。我希望有一个更好的方法来做这件事。最后,我计划添加200辆以上的汽车,以模拟纽约的阿斯塔。在这种情况下,您可能想查看以下讨论:中有精灵碰撞功能:。即使有200辆车,你也不必检查所有的碰撞。您可以只比较子网格中的汽车。(四叉树)。我实际上是这样做的,遍历整个列表。我希望有一个更好的方法来做这件事。最后,我计划添加200辆以上的汽车,以模拟纽约的阿斯塔。在这种情况下,您可能想查看以下讨论:中有精灵碰撞功能:。即使有200辆车,你也不必检查所有的碰撞。您可以只比较子网格中的汽车。(四叉树)。