C# C从文件读取时的测试盒操作

C# C从文件读取时的测试盒操作,c#,textbox,file-handling,C#,Textbox,File Handling,我正在尝试编写一个简单的游戏,其中我的程序从字典中随机选择一个单词,并将其存储在文本框或标签中?我对这部分不太清楚。然后我有另一个文本框,用户在其中输入他的猜测 现在我想给用户一些提示。例如: “游戏”看起来像“m”或“g”。我不喜欢字符的放置方式 我已经编程所有以前的代码,包括随机文件处理方法,所有定时器和计数器等。我只是停留在这一部分 该程序执行以下代码: var行=文件。ReadAllLines@LOCATION; textBox3.Text=行[new Random.nextline.L

我正在尝试编写一个简单的游戏,其中我的程序从字典中随机选择一个单词,并将其存储在文本框或标签中?我对这部分不太清楚。然后我有另一个文本框,用户在其中输入他的猜测

现在我想给用户一些提示。例如: “游戏”看起来像“m”或“g”。我不喜欢字符的放置方式

我已经编程所有以前的代码,包括随机文件处理方法,所有定时器和计数器等。我只是停留在这一部分

该程序执行以下代码: var行=文件。ReadAllLines@LOCATION; textBox3.Text=行[new Random.nextline.Length];

从文件中随机选择一个单词。然而,整个单词显示在文本框3中,而不是我希望的部分。我完全不知道该如何进行。我在网上找不到类似的东西

干杯,
R

从文件中随机选取一个单词后,根据单词的长度,决定要隐藏多少字符,然后随机替换这些字符

像这样的-

    public string GetPartialWord(string word)
    {
        if(string.IsNullOrEmpty(word))
        {
            return string.Empty;
        }
        char[] partialWord = word.ToCharArray();
        int numberOfCharsToHide = word.Length / 2;
        Random randomNumberGenerator = new Random();
        HashSet<int> maskedIndices = new HashSet<int>();
        for(int i=0;i<numberOfCharsToHide;i++)
        {
            int rIndex = randomNumberGenerator.Next(0, word.Length);
            while(!maskedIndices.Add(rIndex))
            {
                rIndex = randomNumberGenerator.Next(0, word.Length);
            }
            partialWord[rIndex] = '_';
        }
        return new string(partialWord);
    }

下面的代码将用下划线替换至少一半的字符。该代码接受一个单词并不断生成随机数,直到用下划线替换了至少一半的字符

public string ConvertToGuessWord(string word)
{
    var guessWord = word;
    int lastRandom = 0;
    do
    {
        Random rand = new Random();

        int thisRandom = 0;
        do
        {
            thisRandom = rand.Next(0, guessWord.Length);
        } while (lastRandom == thisRandom);

        guessWord = guessWord.Replace(guessWord[thisRandom], '_');

        lastRandom = thisRandom;
    } while (guessWord.Count(x => x == '_') < (word.Length / 2));

    return guessWord;
}

嗨,用ux替换单词中的随机字符怎么样?在你的游戏中,你需要的文本框数量与单词中的字母数量一样多。在程序开始时,您可以动态创建文本框。文本框的数量等于文件中最长单词的长度,并将它们放入列表中。当得到一个新词时,只让N个前框可见,N是所选单词的长度。嗨@Andrei,这是我需要做的,但我不知道如何在我的文本框中将字符替换为u!谢谢你的想法。嗨@Graffito,谢谢你的建议。但是如果我为每个角色创建多个文本框,我如何将用户的输入与所有这些文本框进行比较?!假设文本框位于列表tbs do:string word=;对于int i=0;谢谢分享你对这件事的看法!我将尝试一下,看看如何修改它以适合我的代码。非常感谢。请解释一下HashSet maskedIndices=newhashset;`,int rIndex=randomNumberGenerator.Next0,word.Length?感谢这是为了确保我们选择了唯一的索引来屏蔽。例如,当你第一次生成要屏蔽的随机索引时,假设你得到了2,然后当你下次生成随机索引时,如果你也得到了2,那么你会想再生成一次,因为2已经被屏蔽了。Hashset有助于实现这一点。感谢您的输入!很抱歉在晚些时候就此事发表评论。不过,请您在上面的代码中添加注释。不幸的是,我觉得这段代码不够简单,无法完全理解。谢谢你的建议。我将使用随机生成的单词来实现它!R@UnknownR我只是用一个词作为例子。您可以将任何单词传递给它,它将按照您的要求执行。@UnknownR请注意,此代码保证它将始终至少生成一半的字符下划线。如果你把它舒适地送去,它将永远不会回来,等等。你会明白的谢谢@CodingYoshi的洞察力!我仍然没有成功地运行这个。没有错误,但是我的输出与以前相同。