2017-12-14 8 views
2

私はに "connect four"を構築しようとしています。コンソールコマンドでGUIなしで使用できます。"ひずんだ"配列出力を扱う方法

私は、ゲームフィールドを配列の出力を介して初期化するコードを書いています。しかし、配列の改行要素の後に、非常に最初の行の後に、出力が少し左に移動します:

image of console output

は、私はそれを使用しているコードは、エラーを生成します。

$initializegamefield = @() 
$savedgamefield = @() 

for ($i = 0; $i -lt 48; $i++) { 
    if (($i -eq 7) -or ($i -eq 15) -or ($i -eq 23) -or ($i -eq 31) -or ($i -eq 39) -or ($i -eq 47)) { 
     $initializegamefield += "`n" 
     Write-Host "$($initializegamefield)" 
     $savedgamefield += $initializegamefield 
     $initializegamefield = @() 
    } else { 
     $initializegamefield += "A" 
    } 
} 
#Write-Host "$($initializegamefield)" 
Write-Host "$($savedgamefield)" 

ここでは、基本的にテストのためにゲームフィールドを2回初期化しました。
初めて初期化するときは、ONE ROW newline要素を含めて配列$initializegamefieldを出力して出力します。

その後$initializegamefieldが空になります(構造体を参照)。
また、空になる前に$savedgamefieldに保存されます。

ゲームフィールドのフォーマットは、私が$initializegamefieldで行う方法では大丈夫ですが、$savedgamefieldで行うのはもう大丈夫ではありません。

$savedgamefieldのこの歪みを避けるにはどうすればよいですか?

+0

は^^私は $ initializegamefield + =「N」 ' をカットしなければならないことを を意味しますか? しかし、この場合、改行はありません。 私はちょうど完全な水平出力を得るでしょう。 – Narktor

+0

申し訳ありませんが、私は混乱していて、コメントは間違っていたので削除しました。[Ansgar Wiechers](https://stackoverflow.com/users/1630171/ansgar-wiechers)の回答を参照してください。 – iRon

答えて

1

あなたのゲームフィールドは、私が実際に6×8の配列として、それを初期化するお勧めします6×8の配列ですので:

$height = 6 
$width = 8 

$gamefield = New-Object 'Object[,]' $height, $width 
for ($i=0; $i -lt $height; $i++) { 
    for ($j=0; $j -lt $width; $j++) { 
     $gamefield[$i, $j] = 'A' 
    } 
} 

または少なくとも「ギザギザ」の配列(配列の配列)として:

$height = 6 
$width = 8 

$gamefield = @() 
for ($i=0; $i -lt $height; $i++) { 
    $gamefield += ,@(1..$width | ForEach-Object { 'A' }) 
} 
私はあなたが私に教えしようとしているのか理解していない
関連する問題