java - 在具有半径的二维数组上运行的算法

标签 java

试图想出用我的 2d 游戏处理这个问题的最佳方法。我希望能够指定一个坐标对 (x,y) 和一个半径值。鉴于此信息,我想对 gameMap[][] 的所有元素进行操作。

所以如果半径 = 0:

X

如果半径 = 1:

xxx
xxx
xxx

如果半径 = 2:

xxxxx
xxxxx
xxxxx
xxxxx
xxxxx

这是我目前所拥有的,如果半径 > 1,它就会分崩离析

for(int i = 1; i < radius; i++) {
                // right
                setAreaObject(locX+i, locY+i);
                setAreaObject(locX+i, (locY+i)-1);
                setAreaObject(locX+i, locY-i);

                // center
                setAreaObject((locX+i)-1, locY+i);
                setAreaObject((locX+i)-1, (locY+i)-1);
                setAreaObject((locX+i)-1, locY-i);

                // left
                setAreaObject(locX-i, locY+i);
                setAreaObject(locX-i, (locY+i)-1);
                setAreaObject(locX-i, locY-i);
            }

感谢您的任何想法或想法

最佳答案

for(int x = locX - radius; x <= locX + radius; x++)
{
    for(int y = locY - radius; y <= locY + radius; y++)
    {
            setAreaObject(x, y);
    }
}

如果想让半径作用在二维,需要在二维循环。您的代码只循环一次,然后手动处理 Y 方向上的 +/- 1,这就是它无法缩放的原因。手动遍历循环,一次一个迭代,并手动记下对 setAreaObject 的调用,以更好地理解循环的评估方式。

关于java - 在具有半径的二维数组上运行的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275795/

相关文章:

java - Java 中的对象文字

java - 使用简单的 spring-data-rest 项目获取 404 错误

java - 如何为使用 ActiveMQ Artemis 的服务编写集成测试

java - Java字节设置操作中字节的符号(+/-)错误

java - 如何正确获取 WebTarget 获取请求响应 (JAX-RS) 的正文?

java - String to int 给出 nullpointerexception

java - 从JSP调用servlet时出现"HTTP Status 405 – HTTP method GET is not supported by this URL"错误

java - 如何在 Java 8 中映射映射中的值?

java - 在java中读取XML

java - Swing 中的内联编辑组件