连续四场比赛

时间:2013-01-15 15:13:00

标签: powershell

好吧,现在我正在尝试使用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个变量(!)并为所有变量写一个支票?

有人能指出我正确的方向吗?

1 个答案:

答案 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.. }