2016-10-09 4 views
0

Я пытаюсь изменить свой код палача, чтобы правильно работать во-первых, а во-вторых, делать дополнительные вещи, которые мне нужны для этого, включая учет. Итак, вот описаниеC sharp Hangman game + Counter

  • Вы создадите программу Hangman. В этой игре компьютер будет иметь жестко закодированное слово, и пользователь будет вводить одну букву за раз, пока он или она не угадает правильное слово. Счет будет подсчитан, что будет количеством неправильных догадок, которые пользователь имеет. Таким образом, более мелкий балл лучше.

Первоначально слово будет отображаться как список специальных символов, таких как '*' или '-'. Пользователь будет вводить одну букву за раз, и каждый вход будет сравниваться со словом. Если предположение верно, будет отображаться буква, а не специальный символ. Каждое неправильное предположение увеличит счет. Когда пользователь угадывает правильное слово, игра закончится.

конкретно, что мне дано для введения петель и массивов: Измените дизайн и программу, чтобы обеспечить итерацию. Увеличьте количество догадок до 10, чтобы решить слово. Отобразите слово пользователю с каждой буквой в качестве специального символа, такого как ********. Создайте массив правильных букв, предположительно таких как: char [] угадал = новый char [26]; Вам понадобится счетчик, чтобы отслеживать, сколько букв находится в угаданном массиве. Вам не нужно отслеживать неправильно угаданные письма.

Ниже приведен мой код.

//declare variables 
char letter1 = 'r'; 
char letter2 = 'o'; 
char letter3 = 's'; 
char letter4 = 's'; 
char letter; 
int score = 0; 
int finalScore = 0; 
char[] guessed = new char[26]; 
int index = 0; 

     Console.WriteLine("Welcome to the Hangman Program"); 

     for (int i = 0; i < 10; i++) 
     { 

      Console.WriteLine("****"); 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 


      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 

      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
      } 
      finalScore = score; 
     } 

     Console.WriteLine("_____________________________________________"); 
     Console.WriteLine("Your score is: " + finalScore); 
     Console.ReadLine(); 

    } 
} 

}

После того, как я запускаю это, он ставит меня в бесконечном цикле. Я просто в недоумении от того, что я делаю неправильно здесь.


Update:

Я был в состоянии уменьшить его для запуска 12 раз вместо 40, когда у меня есть Int < 8 в мое время цикла, он работает в 8 раз. если я установлю его на что-нибудь более 9, он будет работать 12 раз. Он начинает весь цикл в третий раз. код ниже

char letter1 = 'r'; 
char letter2 = 'o'; 
char letter3 = 's'; 
char letter4 = 's'; 
char letter; 
int score = 0; 
int finalScore = 0; 
char[] guessed = new char[26]; 
int index = 0; 


     Console.WriteLine("Welcome to the Hangman Program"); 

     do 
     { 

      Console.WriteLine("****"); 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 


      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 

      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 

      Console.WriteLine("\n\nEnter a letter please: "); 
      letter = char.Parse(Console.ReadLine()); 
      if (letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4) 
      { 
       Console.WriteLine("You've guessed correctly!"); 
       guessed[index] = letter; 
       index++; 
      } 
      else 
      { 
       Console.WriteLine("You've guessed incorrectly"); 
       score++; 
       index++; 
      } 
      finalScore = score; 
     } 
     while ((index < 9) || (letter != letter1 && letter!= letter2 && letter != letter3 && letter != letter4)); 

     Console.WriteLine("_____________________________________________"); 
     Console.WriteLine("Your score is: " + finalScore); 
     Console.ReadLine(); 
     } 

    } 
} 

ответ

0

У вас нет условий выхода после завершения слова.

Нет бесконечного цикла, он будет просто читать строки четыре раза (по одному для каждого вызова ReadLine) на десять (ваш цикл for). После 40 входов он фактически выйдет.

Я бы порекомендовал этот код по номеру https://codereview.stackexchange.com/ после того, как вы его заработаете.

+0

Что бы вы порекомендовали мне, чтобы я установил условие выхода? мне нужно создать другой тип цикла или его можно поместить в мои операторы if? – wrexxin97

+0

@ wrexxin97, когда слово завершено, выйдите из цикла; когда X количество попыток (менее 40!) достигнуто, выйдите из цикла. Я бы использовал некоторое время, чтобы проверить оба этих условия. –

+0

Где я бы разместил цикл while? заменит ли мой цикл for или может быть добавлен после всех моих операторов if? – wrexxin97