0

我需要有人帮助我度过这个难关。

我正在做一个评估棒球场的项目。在程序中,有一个由数字 1 - 25 表示的网格,表示打击区的区域。如下:

/*------------------------*
 |  1 |  2 |  3 |  4 |  5 |
 |  6 | *7 | *8 | *9 | 10 |
 | 11 |*12 |*13 |*14 | 15 |
 | 16 |*17 |*18 |*19 | 20 |
 | 21 | 22 | 23 | 24 | 25 |
 *------------------------*/

据我所知,7,8,9,12,13,14,17,18,18 是罢工,1,2,3,4,5,6,10,11,15,16,20,21,22, 23,24,25 是球。等等

我需要评估两个数字,即预期的单元格和实际的单元格,并返回意图来自执行的单元格的数量。

IE:用于单元格 12 的间距实际上浮动到单元格 15 将返回 3,因为在网格上 15 距离 12 3 个单元格。进一步的示例,7 个预期和 6 个实际将返回 1,因为 6 仅是 7 个单元格。1 个预期并且 25 实际将返回 4,因为它距离 4 个单元格等。

我这样做是为了扩展我的 Java 知识的自我练习,但我无法自己管理它。我需要一个方法来评估两个参数 cellIntended 和 cellActual,查阅这个矩阵并返回相隔的单元格数。

如果这是错误的位置,我很抱歉,但我想我会把它扔在那里。非常感谢任何尝试或咨询解决方案的人。你们读到这里都很棒。谢谢你。

4

2 回答 2

3

我建议解构地考虑它:

1)在上面的网格上找到可以用来确定距离的点的表示。(例如,通常如何计算距离?想想几何)

2) 将您的数字参考 (1-25) 转换为您在 1) 中使用的表示。

于 2012-09-20T18:56:25.813 回答
2

尝试这样的事情:

int rowAim = (cellAim-1) / 5;
int colAim = (cellAim-1) % 5;
int rowHit = (cellHit-1) / 5;
int colHit = (cellHit-1) % 5;
float distance = Math.sqrt((rowAim - rowHit) * (rowAim - rowHit) + (colAim - colHit) * (colAim - colHit));

那是那里的欧几里得距离,您可以使用其他东西(例如曼哈顿距离)。

于 2012-09-20T18:58:23.663 回答