移动对象

时间:2015-08-06 21:06:10

标签: java

我试图在用户输入时将存储在数组中的对象移动到不同的坐标。例如,如果用户输入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);

1 个答案:

答案 0 :(得分:0)

如果我理解得很好,你就有一份船只清单......但这些船只是用他的坐标(X,Y)标识的。

因此,在玩游戏时,您必须完成将地图上的(xo,y0)移动到(x1,y1)的顺序。

你如何存档?这取决于您用来管理Ships的内部数据结构。

我建议使用任何实现Map<2DPoint,Ship>,给定您可以轻松找到船只的坐标,你可以使用HashMap(不知何故矫枉过正......但它会起作用),或者你可以实现自己的矩阵,如{{ 1}}。之后:将船从一个地方移动到另一个地方是对地图的简单交换操作。

看着你的代码,我想Ship[][]实例应该将给定的结构作为内部成员,就像私有实例字段一样。让我提出一个更直观的想法:

board

}

希望它有所帮助。

我认为你的问题应该用设计标记,因为,如果没有错误的想法,你的问题涉及算法和数据结构。