Java:在控制台中构建和打印网格(无GUI)

时间:2018-05-30 09:22:20

标签: java oop grid

`import java.util.Arrays;

公共班委员会{     / **      *属性      * /

// Rows and Columns
private static final int rows = 10;
private static final int cols = 10;

private static final int numOfObstacles = 5;
private static final int numOfFuelUps = 4;
// 2-D Array for the game board and obstacles and
private int[][] gameBoard;





/**
 * Constructors
 */

/**
 * Initialing the game's main board (grid).
 */

public Board() {
    this.gameBoard = new int[rows][cols];
    for(int i = gameBoard.length - 1; i >= 0; i--) {
        System.out.println();
        for(int j = 0; j < gameBoard.length; j++) {
            gameBoard[i][j] = i * rows + j + 1;
             System.out.print(gameBoard[i][j] + "\t");
        }
    }   
}

`

好的。如你所见,我有一个构建我的10x10板的构造函数

我不会使用GUI但我只是想让它在控制台中工作。 我的棋盘必须按相反顺序排列,就像我希望1-10排位于底部而91-100位于顶部并且球员应该遵循不同的方向,例如1-10排位于底部玩家必须从左向右移动,从11-20开始,玩家必须从右向左移动。

我决定使用StringBuilder

不断更新电路板

我的问题是:如何为我刚才描述的内容编写代码? 1-10和 21-30和 41-50和 61-70和 81-90遵循特定方向,而所有其他行沿不同方向

更新: 现在我只需要反转奇数行

EXTRA: 这是一回事而另一件事是,如果玩家站在特定号码上,而不是打印我想要打印玩家ID的号码(Player1或Player2 =游戏中有2名玩家)。这是个好主意还是我应该只打印一条消息?你觉得怎么样?

1 个答案:

答案 0 :(得分:0)

您应该了解String.format及其功能。示例:您可以指定&#34; width&#34;一串。我想这就是你需要的:

System.out.print(String.format("%-5s%-5d|", "|", 7));

说明: 这将为您提供此输出:

|     7     |
您需要为每个附加参数使用一个百分号(我们有两个:&#34; |&#34;和7)以及字符串格式的说明符(此处:%s表示字符串 - &gt;&#34; |&#34;和%d表示十进制 - &gt; 7)。 -5设置该变量之前的空格数。 此外,如果要将7更新为8,可以将其命名为:

System.out.print(String.format("\r%-5s%-5d|", "|", 8));

&#34; \ r&#34;正在做这项工作。