2017-11-30 12 views
0

2dゲームフィールドを行番号付きで作成しようとしていますが、Javaで番号付けを正しくコーディングする方法について頭を悩ますことはできません。私はこれまでのところ唯一、私は十分なスペースを持っていないとして、それは正しくマップを表示していない任意の2桁の数以上の場合は92d配列のゲームマップ行番号

に行と列の入力プログラムまで働いている何

。私は行の番号付けが数百に上がることができるように2つの空白を言ってブロックを追加することができますが、私は制限されていないマップを取得しようとしています。

ご迷惑をおかけして申し訳ありません。ここ は、私が今持っているものです。

public String toString() { 
    String output; 
    output = "gamemap:\n "; 
    for (int j = 0; j < this.y; j++) { // loop over columns 
     output += j; 
    } 
    output += "\n *"; 

    for (int j = 0; j < this.y; j++) { // loop over columns 
     output += "*"; 
    } 
    output += "*\n"; 

    for (int i = 0; i < this.x; i++) { // loop over rows 
     output += i + "*"; 
     for (int j = 0; j < this.y; j++) { // loop over columns 
      output += this.map[i][j]; 
     } 
     output += "*\n"; 
    } 
    output += " *"; 

    for (int j = 0; j < this.y; j++) { // loop over columns 
     output += "*"; 
    } 
    output += "*\n"; 

    output += "The player has "+ this.player.lives + " lives left."; 
    return output; 
} 
+0

これはなに? this.x?これ? –

+0

私はこの質問を理解していませんが、それらの文字列連結操作をすべて避けるために、 'output'をStringBuilderに変更することを検討してください。 –

+2

期待どおりの出力を追加できますか? –

答えて

0
private String getPaddedNumber(int number, int maxNumber) { 
    if(maxNumber <= number) return Integer.toString(number); 

    int buffer = number; 
    while((buffer /= 10) != 0 & (maxNumber /= 10) != 0) { 
     //nothing 
    } 

    StringBuilder sb = new StringBuilder(); 
    while(maxNumber != 0) { 
     sb.append('0'); //alternatively sb.append(' '); 
     maxNumber /= 10; 
    } 

    return sb.append(number).toString(); 
} 

番号が表示したい行番号で、MAXNUMBERはあなたが持っている行数(またはそれ以上precicely、あなたが持っている最高のラインインデックス)となり