C# - 具有指定要求的Hangman

时间:2018-06-07 16:26:29

标签: c#

我正在尝试用C#创建一个刽子手游戏,但我必须注意很多事情。我需要使用StreamReader,我必须将用户的记录保存在一个文件中(用户的名字,他们试图赢得游戏的次数等),我必须制作一个用户的菜单可以选择一个新的单词主题,或只是重置当前的游戏。 所以到目前为止我所拥有的是“加密”。单词的字母用短划线写出,我可以要求用户选择一个名字,然后选择一个主题。 但是,当用户找到一封信时,我怎么能让程序知道呢? 我希望它是这样的: Word:-----(apple),如果用户键入p,则会出现一个新行,但这次显示“-pp--”。我该怎么做?

其中当前状态的代码:

static void wordLength()
    {
        StreamReader sr = new StreamReader(@"C:\Users\hardi\Desktop\Programozás\gyumolcsok.txt", Encoding.GetEncoding("iso-8859-2")); 
        string szo = Convert.ToString(sr.ReadLine());

        {
            for (int i = 0; i < szo.Length; i++)  
            {
                Console.Write("_");
            }
        }

    }

    static void userName()
    {
        Console.Clear();

        Console.WriteLine("What's your name? ");
        string user = Console.ReadLine();

    }


    static void category()
    {
        Console.Clear();

        Console.WriteLine("Choose a number to specify the topic: ");
        Console.WriteLine("1: Fruit \n2: Animals");
        int caseSwitch = Convert.ToInt32(Console.ReadLine());

        switch (caseSwitch)
        {
            case 1:
                Console.WriteLine("Category: Fruit");
                StreamReader sr = new StreamReader(@"C:\Users\hardi\Desktop\Programozás\gyumolcsok.txt", Encoding.GetEncoding("iso-8859-2"));

                break;
            case 2:
                Console.WriteLine("Category: Animals");
                StreamReader sr1 = new StreamReader(@"C:\Users\hardi\Desktop\Programozás\allatok.txt", Encoding.GetEncoding("iso-8859-2"));

                break;
            default:
                Console.WriteLine("The given number is not an option.");
                return;
        }
    }

    static void Main(string[] args)
    { 

        userName();
        category();
        wordLength();
        Console.ReadKey();

    }
}
}

1 个答案:

答案 0 :(得分:0)

您可以这样做的一种方法是将单词视为char数组,并将用户在另一个char数组中进行的猜测存储起来。然后,对于单词中的每个字符,如果它存在于“guessedLetters”数组中,则显示它,否则显示“ - ”字符。

例如,此方法接受用户猜测的单词和字符列表,并且仅显示正确猜到的字符:

private static string GetMaskedWord(string word, List<char> lettersGuessed)
{
    if (word == null) return word;
    if (lettersGuessed == null) return new string('-', word.Length);

    return string.Join("", word.Select(c => lettersGuessed.Contains(c) ? c : '-'));
}

使用示例:

private static void Main()
{
    string word = "apple";

    // This stores the guessed characters, currently only a 'p'
    var guessedLetters = new List<char> {'p'};

    Console.WriteLine(GetMaskedWord(word, guessedLetters));

    GetKeyFromUser("\nDone! Press any key to exit...");
}

<强>输出

enter image description here