我目前正在使用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
我希望第一个机器人也能在最新的等级中展示,但我不确定如何这样做。
答案 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();
}