0

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

谁能指出我正确的方向?

4

1 回答 1

0

为什么不使用多维数组来设置坐标并评估是否有值:

$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.. }
于 2013-01-15T15:32:05.083 回答