0

了解しました。現在、10x10のボードを使用して基本的な4列のゲームを作成しようとしています。(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の本は、Three inaRowゲームで次の方法を使用しています。

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

配列は0ベースであるため、範囲A-Jを0-9'にマップする必要があります。

ユーザー入力後、スロットが次のようにビジーであるかどうかを確認できます。

if ([bool]$m=[$coordinateLetter,$coordinateNumber]) #if busy
{ do this stuff..}
else
{ do something other.. }
于 2013-01-15T15:32:05.083 に答える