我试图在用户输入时将存储在数组中的对象移动到不同的坐标。例如,如果用户输入2,3,则在这些坐标上控制台上出现对象X但是当他想将同一对象X移动到5,3时。我怎样才能遍历arrayList来实现这一目标。这是我移动船的代码:
public void moveShip2(ArrayList<Ships> player2)
{
for(int i = 0; i<row; i++)
{
for(int j = 0; j<col; j++)
{
ships=board[i][j];
if(ships==null)
{
System.out.print("-" +i);
System.out.print("\t");
}
else
{
System.out.print(ships.getID());
System.out.print("\t");
}
}
System.out.println();
System.out.print("\n");
}
这是我添加船只的代码:
System.out.println("\nPlease Enter x position for your Battleship:");
System.in.read(byt);
str = new String(byt);
row = Integer.parseInt(str.trim());
System.out.println("\nPlease Enter y position for your Battleship:");
System.in.read(byt);
str = new String(byt);
col = Integer.parseInt(str.trim());
Ships B1 = new Ships();
B1.setID("B1");
B1.setType("Battleship");
B1.setX(row);
B1.setY(col);
player1.add(B1);
board.addShip(row, col, B3);
board.moveShip2(player2);
答案 0 :(得分:0)
如果我理解得很好,你就有一份船只清单......但这些船只是用他的坐标(X,Y)标识的。
因此,在玩游戏时,您必须完成将地图上的(xo,y0)移动到(x1,y1)的顺序。
你如何存档?这取决于您用来管理Ships的内部数据结构。
我建议使用任何实现Map<2DPoint,Ship>
,给定您可以轻松找到船只的坐标,你可以使用HashMap(不知何故矫枉过正......但它会起作用),或者你可以实现自己的矩阵,如{{ 1}}。之后:将船从一个地方移动到另一个地方是对地图的简单交换操作。
看着你的代码,我想Ship[][]
实例应该将给定的结构作为内部成员,就像私有实例字段一样。让我提出一个更直观的想法:
board
}
希望它有所帮助。
我认为你的问题应该用设计标记,因为,如果没有错误的想法,你的问题涉及算法和数据结构。