好吧,现在我正在尝试使用10x10主板创建基本的四连胜游戏。 (从A到J和1到10的范围。)现在,游戏的目标是禁止玩家进入已经使用过的“坐标”,并且坐标不能“浮动”。
例如:当玩家选择A9但A1至A8仍然为空时,选择不在那里。 (好像你把一枚硬币放在柱子上)
我想问的是,如何验证之前的值是否未被使用? 我在考虑数组,但我不知道如何做到这一点。
这是我写的用于验证坐标的代码:
Function Validate-Move{
do{
do {
$script:coordinateLetter = Read-host "Please enter a letter from A to J"
if($script:coordinateLetter.Length -gt 1){}
}
while ($script:coordinateLetter.Length -gt 1)
}
until($script:coordinateLetter -cmatch "[A-J]")
do{
$script:coordinateNumber = Read-host "Please enter a number from 1 to 10!"
}
until($script:coordinateNumber -match "^([1-9]|[1][0])$")
}
$playerMove = $coordinateLetter + $coordinateNumber
Write-host "You have chosen " -NoNewline; Write-host "$fullCoordinate" -for green
在这段代码之后,我想检查该值是否可以使用。 Jerry Lee Ford的书在“三连胜”游戏中使用了以下方法:
if (($move -eq "A1") -and ($A1 -ne " ")) {$result = "Invalid"}
if (($move -eq "A2") -and ($A2 -ne " ")) {$result = "Invalid"}
if (($move -eq "A3") -and ($A3 -ne " ")) {$result = "Invalid"}
if (($move -eq "B1") -and ($B1 -ne " ")) {$result = "Invalid"}
等等。但这意味着我必须制作100个变量(!)并为所有变量写一个支票?
有人能指出我正确的方向吗?
答案 0 :(得分:0)
为什么不使用多维数组来设置坐标并评估if是否有值:
$m = New-Object 'object[,]' 10,10
$m[0,0] = "x"
$m[0,9] = "x"
[bool]$m[0,2]
False
[bool]$m[0,1]
True
您需要将范围A - J映射到0 - 9',因为数组是从0开始的
用户输入后,您可以检查插槽是否正常,如下所示:
if ([bool]$m=[$coordinateLetter,$coordinateNumber]) #if busy
{ do this stuff..}
else
{ do something other.. }