我想开发一个虚拟花园,里面有很多昆虫,比如蚂蚁、蜜蜂等等.
例如,如果我想创建一个10×10平方米的面积。
我可以用ArrayList<ArrayList<Insect>> area实现这一点,把所有的昆虫放在一个特定的位置。使用这种方法,我的空间是数组大小的限制,但我认为这更容易实现昆虫行为的A*算法,当然,如果ArrayList的每个位置都在M、CM、DM、MM等中,我需要创建一个10×10平方米的区域,这可能需要大量内存。
或者,我可以在每个昆虫中实现一个int x, y;,以及一个用于观察每一次昆虫在哪里的类。有了这个,我想当我在GUI中表示昆虫时,它将是最简单的。因此,也许这种方法使用A*这样的算法进行搜索,昆虫和另一种昆虫之间的最短路径是最困难的
我们的想法也是,您可以使用它作为一个库来实现许多类型的GUI库。
你认为如何?
你知道解决这个问题的另一种方法吗?
谢谢
发布于 2019-03-15 15:06:50
你给出了四个可能的决心。10×10平方米的阵地数目
m = 100
dm = 10000
cm = 1000000
mm = 100000000所有这些都不过分。即使使用mm,您仍然可以将位置数据保存在千兆字节以下。
从一毫米传送到另一毫米是很难察觉的,除非有人被放大到很远。在一台数字计算机上,你永远也逃不过这一关。你所能做的就是隐藏仿真不是真正的模拟。
您可以使用一些节省内存的技巧。如果这个花园人烟稀少的话,用千兆字节来记住5只昆虫的位置是件很遗憾的事。你可以让每一只昆虫成为一个能记住它在哪里的物体。然而,这造成了它自己的问题。昆虫如何知道它们是否在相互碰撞?现在,要移动每一种昆虫,首先要问其他的昆虫它在哪里。
这个问题叫做碰撞检测。它对您使用的数据结构有很多含义。这里有很多解决方案,我没有时间谈论,只是知道名字应该让你开始。
如果你想进入3D,我建议你从阅读射线铸造开始。
https://softwareengineering.stackexchange.com/questions/388685
复制相似问题