【问题标题】:Placing pieces on 2D array gameboard将棋子放置在 2D 阵列游戏板上
【发布时间】:2015-03-31 10:24:36
【问题描述】:

我正在尝试制作一个包含 8x8 星号游戏板的程序。用户必须在棋盘上放置 8 个棋子,以便每行有一个棋子,但用户可以输入棋子在每一行中的哪一列。最后,我想在他们决定在每行中放置每块的位置后打印板的视觉效果。例如,如果他们输入: 4, 1, 7, 0, 6, 4, 3, 2 它看起来像 ***P****(P = 棋子),用于棋盘的第一行,棋子在其他七行的正确列。现在在我的代码中,我创建了 8x8 游戏板,并且用 0 填充了板(不知道如何使它成为星号)。我现在正处于需要用户输入将碎片放在每一行的正确列中的地步,但我正在努力这样做。我感谢所有决定帮助我的人!

public void problem3(){
    Scanner in = new Scanner(System.in);
    char[][] board = new char[8][8];//Initializes an 8x8 board

    //This creates the 8x8 board and fills the board with asterisks
    for (char row = 0; row < board.length; row++) {
        for (char column = 0; column < board[0].length; column++) {
            board[row][column] = '*';
        }
    for (row = 0; row < 8; row++) { //creates right amount of cells for 8 rows 
        for (char column=0; column<8; column++) { //creates right amount of cells for the 8 columns
            System.out.print(board[row][column] + " "); //prints # of cells
        }
                System.out.println(); //prints each row on new line
    }
    }       
        for (int row = 0; row < 8; row++) {
            int col = 0;
            System.out.println("In which column would you like to place the queen for column ");
            col = in.nextInt();
            board[row][col] = 'P'; //mark board with "P"
            }
        for (int i=0; i<8; i++) { //loops prints board
              System.out.println(Arrays.toString(board[i]));
            }
    }

【问题讨论】:

  • @SilviuBurcea 不,它没有。这句话使它偏离了代码审查的主题:“我现在需要用户输入将各部分放在每一行的正确列中,但我正在努力做到这一点”。代码审查无助于添加新功能。

标签: java arrays loops for-loop multidimensional-array


【解决方案1】:
  • 使用适当的数据类型。现在,由于您需要“*”和“P”,因此字符而不是 int 似乎更好。
  • 用 '*' 而不是 0 来初始化它们
  • 循环进入每个“行”以从用户那里获得输入 8 (0-7) 次
  • 当用户输入 int 数据时,你知道它是上面步骤中提到的一行行,所以取数据如下:

    col = in.nextInt();
    board[row][col] = 'P';//mark it with p. You may need to validate input column added by user is in range of 0-7?
    
  • 像这样打印板子:

      for (int i=0; i<8; i++) {
          System.out.println(Arrays.toString(board[i]));
      }
    

【讨论】:

  • 我的循环仍然存在问题,该循环获取每列的用户输入。对于第一行,它输出带有不在正确位置的“P”的星号,然后为后面的行打印一个 P,但不带星号。
  • 您能否在问题本身中更新您修改后的代码,将其标记为您的代码的编辑版本,我们可以看看。
  • 嘿!我相信我解决了这个问题!我拿走了从第三个 for 循环开始的代码块,该循环为 8 行创建适量的单元格到系统输出打印行,在新行上打印每一行。
猜你喜欢
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 2015-04-04
  • 1970-01-01
相关资源
最近更新 更多