首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在基于游戏的模拟中最好地表示/实现移动对象?

如何在基于游戏的模拟中最好地表示/实现移动对象?
EN

Stack Overflow用户
提问于 2015-10-22 10:01:43
回答 1查看 168关注 0票数 0

我目前正试图为大学做一个蜜蜂模拟,我已经开始制定基本的如何做到这一点。

最初的想法是使用PyGame并向用户展示屏幕上的蜜蜂,但现在我只是先做一些基本的功能。

对于我遇到问题的功能,蜜蜂将寻找未被使用的细胞,然后再去使用它们。这是运行在每一个新的框架和运行在每一个蜜蜂对象,所以每个蜜蜂将检查每个单元格。

我用这个代码来做这个:

代码语言:javascript
复制
 for i in range (0,len(hiveCells)): 
             if hiveCells[i] == "": 
                print("Not taken") 
                hiveCells[i] = "B"

             else:
                 print("Taken") 

但问题是,它当然是在几秒钟内完成的,蜜蜂已经使用了整个蜂箱,但我需要一种缓慢的方法,包括到达那个细胞所需的时间,然后实际使用它所需的时间?

做这件事最好的方法是什么?我正在考虑使用坐标,它将移动到这些坐标的每一个循环,并检查它是否已经到达它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-22 10:21:41

为了包括每个蜜蜂的旅行时间,首先需要定义某种距离度量。一个简单的选择是使用欧几里德距离。

为了将其合并到您的模型中,您需要添加以下内容

  • 在每个蜜蜂和每个蜂箱(单元)中添加一个位置(x,y)和可能的(z)。
  • 定义每帧更新所需的时间(以秒为单位)。
  • 定义蜜蜂的速度(以m/s表示)。
  • 现在,每次帧更新,您都知道自上次更新以来已经过了多长时间,并且您可以(使用蜜蜂的速度和位置)计算蜜蜂的新位置。
  • 现在,框架的更新频率与模型中经过的时间直接相关。

请注意,为了使其工作,您需要某种类型的ID,它将蜜蜂与它声称的蜂箱细胞联系起来。我建议给每只蜜蜂一个独特的身份证。

然后,一旦蜜蜂声称有一个蜂巢单元,你就会将唯一的蜜蜂ID存储在蜂箱单元中,这样,在每次帧更新时,您就可以计算出每只蜜蜂的新位置与它要飞到的蜂巢细胞有关。

此外,要使此方案工作,单元格需要一个位置(您可以将其存储在类似大小的数组中)。但是,为每个蜂巢(单元格)创建一个对象可能是最干净的,它存储着每个蜂巢的坐标,而蜜蜂ID则声称它是正确的。这也将允许您进一步改进您的模型,向蜂箱(单元)/bees中添加附加信息(即蜂蜜当前信息或其他任何信息)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33278356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档