我正在尝试在powershell中构建一个“连接四个”,可通过控制台命令使用,而没有任何GUI。
我已经编写了通过数组输出初始化游戏场的代码。但是,在数组中换行符之后的第一行之后,输出将向左移动一点:
我正在使用的代码会产生错误:
$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/