首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现像花园这样的虚拟世界的最好方法是什么?

实现像花园这样的虚拟世界的最好方法是什么?
EN

Software Engineering用户
提问于 2019-03-15 11:55:39
回答 1查看 128关注 0票数 -2

我想开发一个虚拟花园,里面有很多昆虫,比如蚂蚁、蜜蜂等等.

例如,如果我想创建一个10×10平方米的面积。

我可以用ArrayList<ArrayList<Insect>> area实现这一点,把所有的昆虫放在一个特定的位置。使用这种方法,我的空间是数组大小的限制,但我认为这更容易实现昆虫行为的A*算法,当然,如果ArrayList的每个位置都在M、CM、DM、MM等中,我需要创建一个10×10平方米的区域,这可能需要大量内存。

或者,我可以在每个昆虫中实现一个int x, y;,以及一个用于观察每一次昆虫在哪里的类。有了这个,我想当我在GUI中表示昆虫时,它将是最简单的。因此,也许这种方法使用A*这样的算法进行搜索,昆虫和另一种昆虫之间的最短路径是最困难的

我们的想法也是,您可以使用它作为一个库来实现许多类型的GUI库。

你认为如何?

你知道解决这个问题的另一种方法吗?

谢谢

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2019-03-15 15:06:50

你给出了四个可能的决心。10×10平方米的阵地数目

代码语言:javascript
复制
 m = 100 
dm = 10000
cm = 1000000
mm = 100000000

所有这些都不过分。即使使用mm,您仍然可以将位置数据保存在千兆字节以下。

从一毫米传送到另一毫米是很难察觉的,除非有人被放大到很远。在一台数字计算机上,你永远也逃不过这一关。你所能做的就是隐藏仿真不是真正的模拟。

您可以使用一些节省内存的技巧。如果这个花园人烟稀少的话,用千兆字节来记住5只昆虫的位置是件很遗憾的事。你可以让每一只昆虫成为一个能记住它在哪里的物体。然而,这造成了它自己的问题。昆虫如何知道它们是否在相互碰撞?现在,要移动每一种昆虫,首先要问其他的昆虫它在哪里。

这个问题叫做碰撞检测。它对您使用的数据结构有很多含义。这里有很多解决方案,我没有时间谈论,只是知道名字应该让你开始。

如果你想进入3D,我建议你从阅读射线铸造开始。

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

https://softwareengineering.stackexchange.com/questions/388685

复制
相关文章

相似问题

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