如何应对"扭曲"阵列输出

时间:2017-12-14 07:58:58

标签: arrays powershell

我试图建立一个"连接四个"在中,可通过控制台命令使用,无需任何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)"

为了测试目的,我在这里基本初始化了两次游戏场 第一次初始化时,通过在填充 ONE ROW (包括换行符元素)后输出数组$initializegamefield来完成。

之后$initializegamefield被清空(参见结构) 此外,在清空之前,它会保存到$savedgamefield

虽然使用$initializegamefield的方式对游戏场的格式化是可行的,但在使用$savedgamefield进行游戏时,它已经不行了。

如何避免$savedgamefield

的失真?

1 个答案:

答案 0 :(得分:1)

由于您的游戏领域是6x8阵列,我建议将其初始化为6x8阵列:

$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'
    }
}

或至少作为"锯齿状的" array(数组数组):

$height = 6
$width  = 8

$gamefield = @()
for ($i=0; $i -lt $height; $i++) {
    $gamefield += ,@(1..$width | ForEach-Object { 'A' })
}