我试图建立一个"连接四个"在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
答案 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' })
}