检测两个列表中所有元素之间的冲突

时间:2016-10-22 23:07:40

标签: python pygame collision-detection

我制作的游戏里面有很多小小的生物"漂浮在一个小区域。该地区周围还有很多小食品颗粒。所有生物和食物颗粒都是类的初始化,分别位于creaturespellets列表中。

有许多生物和许多颗粒。我需要一些方法来判断任何生物是否与任何食物位于同一位置,如果是,请移除颗粒并将{1}添加到creature.food

我知道我可以使用for循环,但我不知道如何。提前谢谢。

1 个答案:

答案 0 :(得分:1)

你的问题有点模糊,所以我会做一些假设,试图帮助你。 如您所说,您有两个类:creaturespallets。每个生物和托盘必须具有名为position的属性,该属性在空间中提供其2D / 3D坐标。在每个帧中,将更新所有对象的位置。然后,您想知道某些creature和某些pallet之间是否存在某些冲突。为此,请使用以下命令比较两个位置列表:

list(set(list_creatures_positions).intersection(list2_pallets_positions))

如果结果为null,则表示没有碰撞。如果结果不为null,那么您将获得发生了collisons的所有位置的列表。对于此列表的所有位置,删除相应的托盘并在creature.food属性中添加一个托盘。这应该足够了。