我正在尝试在powershell中构建一个“连接四个”,可通过控制台命令使用,而没有任何GUI。

我已经编写了通过数组输出初始化游戏场的代码。但是,在数组中换行符之后的第一行之后,输出将向左移动一点:

arrays - 如何处理 “distorted” array-output-LMLPHP

我正在使用的代码会产生错误:

$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失真?

最佳答案

由于您的游戏场是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'
    }
}

或至少作为“锯齿状”数组(数组的数组):
$height = 6
$width  = 8

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

关于arrays - 如何处理 “distorted” array-output,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47808460/

10-11 22:53