java - 表示(存储)区域面积的最佳方式

标签 java dimensions area

嗯,我正在开发一个模拟,部落(团体)中的特工可以在固定大小的 map 中竞争他们拥有多少区域。( map 是二维 map )。他们通过分组互相战斗来进行竞争,获胜的一组获得另一组的所有权。这个模拟是用java编写的。

我试图得到一些想法的主要问题是我应该如何存储每个组拥有多少 map 。起初我想只使用 Dimension 的一个实例,然后每次一组代理获胜时它将其添加到维度中的区域。然而,问题是所拥有的区域可以位于 map 中的任何位置,区域之间有间隙,如下图所示。(抱歉,图片很差,我正在尝试使用 gimp 绘制问题)

enter image description here

注意:不同颜色的矩形代表代理拥有的区域,而紫色圆圈代表代理本身

现在另一个想法是使用 Dimension 类型的 ArrayList 来保存特定部落代理拥有的所有区域。

但我在想是否有更好的方法来做到这一点。

最佳答案

每个部落之间以及该部落拥有多少个区域之间存在一对多(技术上是一对零或多对)关系。您有 3 种基本选择来表示任何一对多关系。

1. You can place a reference in each child to the parent
2. You can manage a list of children in each parent
3. You can manage a list of parent-child pairings separately

我要问自己的问题是,您想从模拟中得出什么结果?从那里开始并向后工作。例如,如果您的目标是按部落报告所拥有的 Assets ,那么管理每个部落对象内的区域列表可能是最有效的方法。如果您的目标是显示谁拥有每个区域的区域报告,那么引用每个区域的对象内的拥有部落可能会更简单。如果您支持多个 View ,那么在两个地方进行管理也可能是合理的。

第三个选项,管理对象本身之外的关系,在也可能支持多对多关系的情况下最有用,例如允许玩家成为多个部落的成员。

关于java - 表示(存储)区域面积的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14550086/

相关文章:

java - a4j :commandButton doesn't work

java - 在 IntelliJ 和 Eclipse 之间共享项目

javascript - $(window).width() 与 $(document).width() 之间的区别

html - 如何放大此文本的垂直区域并减去其水平区域?

java - java字符串中`rtserver-id`变成`rtserver - id`

java - Spring 2.1.0.M4rabbitmq声明队列并在运行时将它们绑定(bind)到监听器

java - 错误数组维度缺失

android - 在 ImageView 中获取以像素为单位的图像尺寸

java - 如何计算一个长方体与其相邻长方体的接触面积

android 在屏幕上发现压力