刽子手控制台应用程序

本文关键字:应用程序 控制台 刽子手 | 更新日期: 2023-09-27 18:35:50

我目前正在做一个小项目,我正在创建一个刽子手游戏作为控制台应用程序。目前,我遇到了问题,因为我想为要猜测的单词创建一个数组。这个词不是随机的,永远是一样的。在这种情况下,它是"米勒"。我想为"miller"创建一个数组,并有一个循环来显示单词字符数组中的每个字母。当字母猜对时,我想显示正确的字母,如果没有显示特殊字符"*"代替它。因此,例如,单词是"miller",并且首先显示为"******"。当用户猜对一个字母时,一个特殊字符将成为猜对的字母。所以,假设用户猜"我"...然后显示的单词将是"*i****"。假设他接下来猜"l"...然后显示的单词将是"*ill**"。我将如何做到这一点?这是我到目前为止的代码...我已经创建了已经尝试为此创建一个数组。抱歉,如果这看起来微不足道,但我是编程新手,只需要一些指导和帮助。

TLDR;我需要有关此代码的帮助。我正在尝试制作一个包含"miller"的数组,我希望能够在用户猜出正确字母时调用该数组,将特殊字符"*"的显示更改为他猜对的字母。有人告诉我,绕一个 for 循环是最好的路线,但我有点迷茫。帮助?

static void Main(string[] args)
    {            
        char[] guessed = new char[26];
        char[] word = "miller".ToCharArray();
        char guess;
        int score = 0, index = 0;
        Console.WriteLine("******");
        for (int i = 0; i < 10; i++)
        {
            Console.Write("Please enter a letter to guess: ");
            guess = char.Parse(Console.ReadLine());
            if (guess == l1 || guess == l2 || guess == l3 || guess == l4 || guess == l5 || guess == l6)
            {
                Console.WriteLine("Your guess is correct.");
                guessed[index] = guess;
                index++;
            }
            else
            {
                Console.WriteLine("Your guess is incorrect.");
                score++;
            }

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

}

刽子手控制台应用程序

我不知道

这是否是你要找的,也许你下次应该更具体......但我试图为您的问题创建一个解决方案。

static void Main(string[] args)
    {
        char[] guessed = new char[26];
        char[] testword = "******".ToCharArray();
        char[] word = "miller".ToCharArray();
        char[] copy = word;
        char guess;
        int score = 0, index = 0;
        Console.WriteLine(testword);
        for (int i = 0; i < 10; i++)
        {
            Console.Write("Please enter a letter to guess: ");
            guess = char.Parse(Console.ReadLine());
            bool right = false;
            for (int j = 0; j < copy.Length; j++)
            {
                if (copy[j] == guess)
                {
                    Console.WriteLine("Your guess is correct.");
                    testword[j] = guess;
                    guessed[index] = guess;
                    index++;
                    right = true;
                }
            }
            if (right != true)
            {
                Console.WriteLine("Your guess is incorrect.");
                score++;
            }
            else
            {
                right = false;
            }
            Console.WriteLine(testword);

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

在你的文件中包括using System.Linq;,这里是你的 for 循环。

for (int 1 = 0; i < 10; i++)
{
    Console.Write("Please enter a letter to guess: ");
    char guess = char.Parse(Console.ReadLine());
    if(word.Contains(guess))//checks if the word is is the array word
    {
        //the guess was correct.
        Console.WriteLine("Your guess is correct.");
        guessed[index] = guess;
        index++;
    }
    else
    {
        //the guess was wrong.
        console.WriteLine("Your guess is incorrect.");
        ....
    }
}

希望这有帮助。

看起来你离那里很近。 我不确定的两件事是 if 语句"guess == l1 ||猜测 == L2" 等...这可以通过以下方式处理:

if(word.Contains(guess))

其次,您将需要另一个 for 循环来浏览正确猜测的字母并放置它们。

for 循环填写字母而不是星号:把它放在 for 的开头(int i = 10...)

for (int j = 0; j < word.Length; j++)
{
   if (guessed.Contains(word[j]))
   {
      Console.Write(word[j]);
   }
   else
   {
      Console.Write("*");
   }
}