我目前正试图为大学做一个蜜蜂模拟,我已经开始制定基本的如何做到这一点。
最初的想法是使用PyGame并向用户展示屏幕上的蜜蜂,但现在我只是先做一些基本的功能。
对于我遇到问题的功能,蜜蜂将寻找未被使用的细胞,然后再去使用它们。这是运行在每一个新的框架和运行在每一个蜜蜂对象,所以每个蜜蜂将检查每个单元格。
我用这个代码来做这个:
for i in range (0,len(hiveCells)):
if hiveCells[i] == "":
print("Not taken")
hiveCells[i] = "B"
else:
print("Taken") 但问题是,它当然是在几秒钟内完成的,蜜蜂已经使用了整个蜂箱,但我需要一种缓慢的方法,包括到达那个细胞所需的时间,然后实际使用它所需的时间?
做这件事最好的方法是什么?我正在考虑使用坐标,它将移动到这些坐标的每一个循环,并检查它是否已经到达它们。
发布于 2015-10-22 10:21:41
为了包括每个蜜蜂的旅行时间,首先需要定义某种距离度量。一个简单的选择是使用欧几里德距离。
为了将其合并到您的模型中,您需要添加以下内容
请注意,为了使其工作,您需要某种类型的ID,它将蜜蜂与它声称的蜂箱细胞联系起来。我建议给每只蜜蜂一个独特的身份证。
然后,一旦蜜蜂声称有一个蜂巢单元,你就会将唯一的蜜蜂ID存储在蜂箱单元中,这样,在每次帧更新时,您就可以计算出每只蜜蜂的新位置与它要飞到的蜂巢细胞有关。
此外,要使此方案工作,单元格需要一个位置(您可以将其存储在类似大小的数组中)。但是,为每个蜂巢(单元格)创建一个对象可能是最干净的,它存储着每个蜂巢的坐标,而蜜蜂ID则声称它是正确的。这也将允许您进一步改进您的模型,向蜂箱(单元)/bees中添加附加信息(即蜂蜜当前信息或其他任何信息)。
https://stackoverflow.com/questions/33278356
复制相似问题