2017-11-18 118 views
0

我会简化它:基本的hang子手游戏,它通过玩家2字母选择循环,如果它不匹配玩家1的单词的第一个字符,它会移除生命,第二个,直到它找到一个匹配或者只是删除了这个玩家1个字长的许多生命。C# - 基本的hang子手游戏生命问题

我明显不希望这样,我想要它检查数组 - 如果没有匹配,则删除一条生命。

for (int i = 0; i < playerTwoGuesses.Length; i++) 
     { 
      Thread.Sleep(1400); 
      Console.Write("Guess: "); 
      count = 0; 

      do 
      { 
       try 
       { 
        playerTwoGuesses[i] = char.Parse(Console.ReadLine()); 
        validGuess = true; 
       } 
       catch (Exception) 
       { 
        Console.WriteLine("Please enter a single character only."); 
       } 
      } while (validGuess == false); 


      for (int j = 0; j < playerOneDisguised.Length; j++) 
      { 
       if (playerOneCharacters[j] == playerTwoGuesses[i]) 
       { 
        playerOneDisguised[j] = playerTwoGuesses[i]; 

       } 
       else 
       { 
        lives = lives - 1; 

       } 
      } 


      if (lives == 0) 
      { 
       Console.WriteLine("Oh no! It seems you've lost. Closing game in 5 seconds."); 
       Thread.Sleep(5000); 
       Environment.Exit(0); 
      } 


      Console.WriteLine(playerOneDisguised); 


      for (int k = 0; k < playerOneDisguised.Length; k++) 
      { 
       if (playerOneDisguised[k] != '*') 
       { 
        count = count + 1; 
        if (count == playerOneDisguised.Length) 
        { 
         Console.WriteLine("Congratulations you've won!"); 
         Thread.Sleep(1000); 
         Console.WriteLine("Closing game in 5 seconds."); 
         Thread.Sleep(5000); 
         Environment.Exit(0); 
        } 
       } 
      } 
     } 
+0

所以你可能想检查输入的字母**是否包含在单词**中。如果没有,生命被删除... –

回答

0

试试这个:

 bool match = false; 
     for (int j = 0; j < playerOneDisguised.Length; j++) 
     { 
      for (int y = 0; y < playerTwoGuesses.Length; y++) 
      { 
       if (playerOneCharacters[j] == playerTwoGuesses[y]) 
       { 
        playerOneDisguised[j] = playerTwoGuesses[y]; 
        match = true; 
       } 
      } 

     } 
     if (match == false) { 

      lives = lives - 1; 
     } 
     // Reset it back to false 
     match = false; 
+0

是的,它实际上已经修复它 - 非常感谢:) –

0

而不是在阵列上自己循环,你可以问,如果猜对焦炭存在于它。然后你只需要一个if语句来处理猜测

if (Array.Exists(playerTwoGuesses, element => element == lastGuess) { 
+1

我可能误读了一些东西,但为什么'playerTwoGuesses.Contains(lastGuess)'工作? – 2017-11-18 10:34:36

+0

你说得对,那会很好。这是一个更好的答案,更具可读性 –