Проблема с игрой на C#
Итак, у меня возникли проблемы с моей игрой в палача. Я в основном все сделал, и он работает, но по какой-то причине тело настоящего человека не появляется, когда вы угадываете письмо неправильно. Я думал, что у меня правильно написан код, но не думаю, кто-нибудь знает, что мне здесь не хватает?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Random random = new Random((int)DateTime.Now.Ticks);
string[] wordBank = { "Blue", "Black", "Yellow", "Orange", "Green", "Purple" };
string wordToGuess = wordBank[random.Next(0, wordBank.Length)];
string wordToGuessUppercase = wordToGuess.ToUpper();
StringBuilder displayToPlayer = new StringBuilder(wordToGuess.Length);
for (int i = 0; i < wordToGuess.Length; i++)
displayToPlayer.Append('_');
List<char> correctGuesses = new List<char>();
List<char> incorrectGuesses = new List<char>();
int lives = 5;
bool won = false;
int lettersRevealed = 0;
string input;
char guess;
while (!won && lives > 0)
{
Console.Write("Guess a letter: ");
input = Console.ReadLine().ToUpper();
guess = input[0];
if (correctGuesses.Contains(guess))
{
Console.WriteLine("You've already tried '{0}', and it was correct!", guess);
continue;
}
else if (incorrectGuesses.Contains(guess))
{
Console.WriteLine("You've already tried '{0}', and it was wrong!", guess);
continue;
}
if (wordToGuessUppercase.Contains(guess))
{
correctGuesses.Add(guess);
for (int i = 0; i < wordToGuess.Length; i++)
{
if (wordToGuessUppercase[i] == guess)
{
displayToPlayer[i] = wordToGuess[i];
lettersRevealed++;
}
}
if (lettersRevealed == wordToGuess.Length)
won = true;
}
else
{
incorrectGuesses.Add(guess);
Console.WriteLine("Nope, there's no '{0}' in it!", guess);
lives--;
}
Console.WriteLine(displayToPlayer.ToString());
}
if (won)
Console.WriteLine("You won!");
else
Console.WriteLine("You lost! It was '{0}'", wordToGuess);
Console.Write("Press ENTER to exit...");
Console.ReadLine();
}
private void drawbody()
{
incorrectGuesses = new List<char>();
foreach (char item in incorrectGuesses)
{
incorrectGuesses.Add(item);
}
Console.WriteLine();
if (incorrectGuesses.Count == 1)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses.Count == 2)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses.Count == 3)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses.Count == 4)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses.Count == 5)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" | |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses.Count == 6)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" | |");
Console.WriteLine(" | /");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses.Count == 7)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" | |");
Console.WriteLine(" | / \\");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else
Console.WriteLine();
Console.WriteLine();
}
}
}
1 ответ
Вы нигде не вызываете метод drawbody() в своем методе Main. Кроме того, вы не передаете переменную VariableGuesses в метод drawbody. Также было бы лучше просто передать счет этому методу, а не пересоздавать список каждый раз, когда вы рисуете.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hangman
{
class Program
{
static void Main(string[] args)
{
Random random = new Random((int)DateTime.Now.Ticks);
string[] wordBank = { "Blue", "Black", "Yellow", "Orange", "Green", "Purple" };
string wordToGuess = wordBank[random.Next(0, wordBank.Length)];
string wordToGuessUppercase = wordToGuess.ToUpper();
StringBuilder displayToPlayer = new StringBuilder(wordToGuess.Length);
for (int i = 0; i < wordToGuess.Length; i++)
displayToPlayer.Append('_');
List<char> correctGuesses = new List<char>();
List<char> incorrectGuesses = new List<char>();
int lives = 5;
bool won = false;
int lettersRevealed = 0;
string input;
char guess;
while (!won && lives > 0)
{
Console.Write("Guess a letter: ");
input = Console.ReadLine().ToUpper();
guess = input[0];
if (correctGuesses.Contains(guess))
{
Console.WriteLine("You've already tried '{0}', and it was correct!", guess);
continue;
}
else if (incorrectGuesses.Contains(guess))
{
Console.WriteLine("You've already tried '{0}', and it was wrong!", guess);
continue;
}
if (wordToGuessUppercase.Contains(guess))
{
correctGuesses.Add(guess);
for (int i = 0; i < wordToGuess.Length; i++)
{
if (wordToGuessUppercase[i] == guess)
{
displayToPlayer[i] = wordToGuess[i];
lettersRevealed++;
}
}
if (lettersRevealed == wordToGuess.Length)
won = true;
}
else
{
incorrectGuesses.Add(guess);
Console.WriteLine("Nope, there's no '{0}' in it!", guess);
lives--;
drawbody(incorrectGuesses.Count);
}
Console.WriteLine(displayToPlayer.ToString());
}
if (won)
Console.WriteLine("You won!");
else
Console.WriteLine("You lost! It was '{0}'", wordToGuess);
Console.Write("Press ENTER to exit...");
Console.ReadLine();
}
private static void drawbody(int incorrectGuesses)
{
Console.WriteLine();
if (incorrectGuesses == 1)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses == 2)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses == 3)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses == 4)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses == 5)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" | |");
Console.WriteLine(" |");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses == 6)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" | |");
Console.WriteLine(" | /");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else if (incorrectGuesses == 7)
{
Console.WriteLine(" _____");
Console.WriteLine(" | |");
Console.WriteLine(" | O");
Console.WriteLine(" | \\|/");
Console.WriteLine(" | |");
Console.WriteLine(" | / \\");
Console.WriteLine(" |");
Console.WriteLine("__|__");
}
else
Console.WriteLine();
Console.WriteLine();
}
}
}