2013-11-15 3 views
0

PowerShell에서 행맨 게임을 개발하려고합니다. 내 스크립트에는 모두 잘 어울리지 만 게임에는 논리적 오류가 있습니다. 나는 사용자가 같은 단어를 두 번 입력 할 때, 확인을하고 싶다. 간단하다! 예 : The Word "Football". Letter 'F'를 1 회 이상 입력하면 오류 메시지가 나타납니다. 그들은 이미 포함하여 편지를 사용한 경우 다음 확인 배열 [email protected]()에 추가PowerShell 스크립트 행맨 게임

다음
$random = Get-Random -Minimum 0 -Maximum 5; 
$names="America","Iran","Poland","Cat","PowerShell "; 
$arrname= $names[$random]; 
$arrname.ToCharArray(); 
$ntp="0","1"; 
$arrlen = $arrname.Length; 
clear; 

Write-Host "---------Guess the word--------------"; 

Write-Host "Length is : " $arrname.Length; 
$life=3; 
do{ 
Write-Host "Lifes Remain " $life; 
$rnd= Read-Host "Guess the word "; 

if($flag2 -le 1) 
{ 
$flag=0; 
} 
else 
{ 
$life--; 
} 
for($i=0;$i -lt $arrname.Length; $i++) 
{ 

if($rnd -eq $arrname[$i]) 
{ 
$flag =1; 
$arrlen --; 
} 
} 
if($flag -eq 0) 
{ 

$life--; 

} 

if($arrlen -eq 0) 
{ 

Write-Host $arrname; 
Write-Host " ************ You WIN ********************"; 
break; 

} 

if($life -eq 0) 
{ 
Write-Host " ------------- You LOST ------------" 
break; 
} 
$p++; 
} 
while(1); 

답변

1

당신이 갈이,이 문자의 트랙을 유지하기 위해, 당신의 방법에 당신을 잘 얻어야한다 : 다음은 내 코드입니다 문자 $guesses -contains $guessLetter

$random = Get-Random -Minimum 0 -Maximum 5; 
$names="America","Iran","Poland","Cat","PowerShell"; 
$targetWord = $names[$random]; 
[Char[]]$wordProgress = "_" * $targetWord.Length 
clear; 

Write-Host "---------Guess the word--------------"; 

$life=3; 
[email protected]() 
do 
{ 
    do 
    { 
     Write-Host "[$($targetWord.Length)] $wordProgress"; 
     Write-Host "Lifes Remain " $life 

     $guessLetter = Read-Host "Guess a letter:" 
     if ($guesses -contains $guessLetter) 
     { 
      "Try another letter!" 
     } 
    } while ($guesses -contains $guessLetter) 

    $guesses+=$guessLetter 
    $guesses -join ',' 

    $foundLetter = $false 
    for($i=0;$i -lt $targetWord.Length; $i++) 
    { 
     if($guessLetter -like $targetWord[$i]) 
     { 
      $wordProgress[$i] = $guessLetter 
      $foundLetter=$true 
     } 
    } 

    if(!$foundLetter) 
    { 
     $life--; 
    } 

    if($($wordProgress -join '') -like $targetWord) 
    { 
     Write-Host $targetWord; 
     Write-Host " ************ You WIN ********************"; 
     break; 
    } 

} 
while($life -gt 0) 
if ($life -eq 0) 
{ 
Write-Host " ------------- You LOST ------------" 
} 
+0

OMG! 당신은 단지 최고입니다! – daniyalahmad

관련 문제