如何创建一个数组来存储来自连续用户输入的x,y坐标?

时间:2017-10-15 15:29:18

标签: java arrays

我目前正在使用Java制作RobotArena游戏,其中一项任务是制作一个数组,用于在游戏中存储每个机器人。例如,如果用户想要在游戏中使用2个机器人...我必须将2个机器人存储在一个阵列中(它们的x和y坐标),或者用户是否需要更多的机器人,而不仅仅是2个。

我为机器人坐标制作了一个2D阵列,但它只存储了阵列中机器人的最新X / Y坐标,并且不存储以前的机器人坐标。

有办法做到这一点吗?将它分配给变量或将其置于循环中?任何答案将不胜感激。

这是我到目前为止的代码,我是Java的新手,所以如果代码不太好,我很抱歉。

public static class RobotArena{
    public RobotArena(int x, int y){
        int Arena[][] = new int[4][4]; //Sets the 2d array
        Arena[x][y] = '1'; //Puts 1 where the X/Y co ordinate is

        for (int[] a : Arena) { //this prints out the grid
            for (int i : a) {
                System.out.print(i + " ");
            }
            System.out.println("\n");
        }

        public static void main(String[] args) {

            Scanner s = new Scanner(System.in);
            System.out.println("How many Robots in your world?");
            int numRobots = s.nextInt();

            Robot[] allRobots = new Robot[numRobots];
            Robot.RobotArena[] allRobots2 = new Robot.RobotArena[numRobots];

            int rx, ry;

            System.out.println("Now enter position of each robot in turn (as x y) >");
            for (int ct = 0; ct<numRobots; ct++) {
                System.out.println("Enter, x y position for " + ct + "th robot: >");
                rx = s.nextInt();
                ry = s.nextInt();
                allRobots[ct] = new Robot(rx, ry);
                allRobots2[ct] = new RobotArena(rx, ry);
                allRobots[ct].printIdPosition(); 
            }       
        }
    }
}

这是我向游戏添加2个机器人时的输出:

机器人1(1,1)的协调;

0 0 0 0 
0 49 0 0 
0 0 0 0 
0 0 0 0 

当我将第二个机器人添加到游戏中时,这是输出,带有co-ord(2,2):

0 0 0 0 
0 0 0 0 
0 0 49 0 
0 0 0 0 

我希望第一个机器人也能在最新的等级中展示,但我不确定如何这样做。

1 个答案:

答案 0 :(得分:0)

我宁愿这样做:

•仅使用一个变量来初始化所有机器人

•使用私人会员初始化竞技场

•制作一个设定坐标的方法

•制作一个打印竞技场的方法。

public static class RobotArena{
    int Arena[][] = new int[4][4];


public void setCoordinates(int x,int y){
    Arena[x][y] = '1';
}
public void printArena(){
     for (int[] a : Arena) { //this prints out the grid
        for (int i : a) {
            System.out.print(i + " ");
        }
        System.out.println("\n");
    }
}
}

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        System.out.println("How many Robots in your world?");
        int numRobots = s.nextInt();

       RobotArena allRobots=new RobotArena();

        int rx, ry;

        System.out.println("Now enter position of each robot in turn (as x y) >");
        for (int ct = 0; ct<numRobots; ct++) {
            System.out.println("Enter, x y position for " + ct + "th robot: >");
            rx = s.nextInt();
            ry = s.nextInt();
            allRobots.setCoordinates(rx, ry);

            //allRobots[ct].printIdPosition(); 
        }
        allRobots.printArena();
    }