Traffic Jam Java分配

时间:2015-12-07 01:41:11

标签: java

我需要创建一个Java程序,用以下规则来玩游戏;

  • 有两支球队。
  • " board"从这样开始:即每队2人; X X null Y Y。
  • 同一团队的成员不能互相跳跃。
  • 对方队员只有在他们跳跃的对方队员后面留有空白时才能互相跳跃。
  • 任何一个团队的成员只能向前移动一个空白区域,他们永远不会向后移动。
  • 目标是让他们切换位置。即Y Y null X X。

这是我上面例子的解决方案;

X X O Y Y - 移动X.
X O X Y Y - Y JUMP X.
X Y X O Y - 移动Y.
X Y O Y X - X JUMP Y.

反复重复..

O Y X Y X - X JUMP Y.
Y O X Y X - 移动Y.
Y Y X O X - Y JUMP X.
Y Y O X X - 移动X

我不确定如何使这种可扩展性能够处理更大的团队规模,或者我是否在正确的轨道上。任何有关这方面的帮助将不胜感激。

这是我到目前为止所拥有的;

    public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    int teamSize = 0, i = 0;

    System.out.print("How many members on each team?");
    teamSize = keyboard.nextInt();

    //set board and it's size
    String[] board = new String[(teamSize*2) + 1];

    //set team positions
    int x = 1, y = 1;
    for (i = 0; i < teamSize; i++) {
        board[i] = "X";
        board[i + teamSize + 1] = "Y";
    }
    System.out.print("\nBoard: " + Arrays.toString(board));

    // firstMove - MOVE X
    String pre1move = board[teamSize]; // original center value
    board[i] = board[i-1]; 
    board[i-1] = pre1move;
    System.out.print("\nX moved up: " + Arrays.toString(board));
    // secondMove - Y JUMP X
    // thirdMove - MOVE Y
    // fourthMove - X JUMP Y 

    // repeat pattern in reverse
}

1 个答案:

答案 0 :(得分:1)

如果不直接向你提供代码,就很难回答你的问题.....所以,让我看看我是否可以解释你应该采取的一般策略。

目前,在main方法最底部的注释掉的代码中,您实际上正在指定&#34;好的,这个特定的人应该专门移到这个空间。&#34;现在,这是有效的,但只有在你有2对2的确切情况下。当你尝试打3对3,4对4等时,你的说法是正确的;这不会有规模。

您需要做的是设置您的代码,以便您可以查询一个Player及其与其他PlayerBoard本身的关系。您应该创建Player Java类,并为它们提供DirectionName等实例变量,以便确定它们的行进方向。

然后,通过这些信息,您可以在任何个人Player的某个特定点上提出更多一般性问题:

  • 我是Player X.我正在旅行Right。我可以:

  • 再往右走?

- 我的路上还有另一个Player X吗?

- 我是否准备离开董事会(因此在我的最终职位上)?

- 等。

因此,如果您在Player的当前情况下可以提出更多通用问题,那么游戏就会缩放。

我知道这很模糊,但就像我说的那样,关于你在没有确切解决方案的情况下得到的最好的东西。祝你好运。