如何跟踪和更新Java 2D阵列中的值?

时间:2018-02-21 23:19:52

标签: java arrays multidimensional-array nodes

我需要开发一个程序,随机创建一个int值的数组(10x10)(1或0; 1 =墙; 0 =没有墙),并有一个循环,要求用户在迷宫中导航数组时尚。此循环还必须测试用户是否已到达阵列的底部。最后,程序必须使用用户的路径打印数组,基本上用户触摸的任何值都不是1或0。

我可以创建并打印数组没问题,并将其设置为仅值1或0我的困惑是:

  1. 如何降低获得1的几率。

  2. 如何创建循环来导航/跟踪迷宫和用户的路径。

  3. 如何更改用户触摸的数组值,并正确打印新更改的数组。 (最好使用节点)。

  4. 让我们说这是一个随机生成的5x5阵列:

    0 1 0 0 1

    0 1 1 1 0

    1 0 1 1 0

    0 1 0 0 1

    1 1 0 1 1

    这是使用此数组的输出窗口的样子:

    你想去哪里(上,下,左,右):

    向下

    你想去哪里(上,下,左,右):

    你撞墙了!游戏结束了!

    5 1 0 0 1

    5 7 1 1 0

    1 0 1 1 0

    0 1 0 0 1

    1 1 0 1 1

    0是允许用户通过它们的开放路径,1是用户遇到它们时结束游戏的墙。 5表示用户的路径,7表示用户在墙上撞墙。

    在我的情况下,阵列将是10x10,并且只在程序结束时打印一次。用户不会看到原始数组。

    我不是要求任何人为我编程,只是向正确的方向推进。从逻辑上讲,我似乎无法在脑海中弄清楚这一点。我再次对Java编程非常陌生,并且感谢任何人愿意提供的任何帮助。

    我为这个很长的问题道歉,我只想尽可能清晰,因为我的情况需要完全理解背景。如果需要更多信息,我会在一天内回复。如果我的解释没有意义,我还添加了我的代码照片。

    我非常感谢所给予的任何和所有帮助,非常感谢! :d

    Pic 1 of code

    Pic 2 of code

2 个答案:

答案 0 :(得分:0)

获得1的可能性较低,请参阅this link

将播放的当前位置保存在对象/变量/类ex:

public static class Location {
    public static int x = 0;
    public static int y = 0;
}

每次用户移动时,例如down

  • 增加Location.x++
  • 检查新位置是否为隔离墙:if(Grid[Location.x][Location.y] == 1) /* do stuff */
  • 更改网格单元格的值:Grid[Location.x][Location.y] = '{your value}'

答案 1 :(得分:0)

  1. 使用随机而不是安全随机,您可以使用
  2. 获得下一个随机

    Random r = new Random(); iWallChance = r.nextInt(100);

    2和3. Ali Sharabiani对此有一个很好的答案。