我目前正在尝试为大学做一个蜜蜂模拟,我已经开始研究如何做它的基础知识。你知道吗
最初的想法是使用PyGame并在屏幕上向用户展示蜜蜂,但现在我只是先做一些基本的功能。你知道吗
我遇到的问题是,蜜蜂会寻找没有被使用的细胞,然后去使用它们。这是运行在每一个新的帧和运行在每一个蜜蜂对象,所以每一只蜜蜂将检查每个细胞。你知道吗
我用这个代码:
for i in range (0,len(hiveCells)):
if hiveCells[i] == "":
print("Not taken")
hiveCells[i] = "B"
else:
print("Taken")
但问题是,它当然在几秒钟内完成,蜜蜂已经使用了整个蜂箱,但我需要一种方法来做这件事慢慢地,包括时间,它需要旅行到细胞,然后实际使用它的时间?你知道吗
最好的方法是什么?我在考虑使用坐标,它会在每个循环中移近这些坐标,并检查它是否到达它们。你知道吗
为了包含每只蜜蜂的旅行时间,你首先需要定义某种距离度量。一个微不足道的选择是使用欧几里德距离。你知道吗
为了将此合并到您的模型中,您将需要以下附加内容
请注意,为了使这项工作,你需要某种类型的ID,它将蜜蜂与其声称的蜂巢细胞联系起来。我建议给每只蜜蜂一个独特的ID。你知道吗
然后,一旦蜜蜂认领一个蜂巢单元,你就在蜂巢单元中存储唯一的蜜蜂ID,这样在每次帧更新时,你就可以计算出每只蜜蜂相对于它要飞到的蜂巢单元的新位置。你知道吗
另外请注意,为了使此方案工作,蜂窝单元需要一个位置(您可以将其存储在类似大小的阵列中)。但是为每个蜂巢(细胞)创建一个对象可能是最干净的,它存储了它的坐标和声明它的蜜蜂ID。这还允许您通过向蜂巢(细胞)/蜜蜂添加附加信息(例如,蜂蜜存在,或其他任何信息)来进一步改进您的模型。你知道吗
相关问题 更多 >
编程相关推荐