我正在尝试编写一个简单的游戏,我的程序会从字典中随机选择一个单词并将其存储在文本框/标签中? (当然不是这个部分)。然后我有另一个文本框,用户输入他的猜测。
现在我想给用户一些hint.F或示例单词: '游戏'看起来像是_一个_'或者' g _ _ e'。我不喜欢角色的放置方式。
我编写了所有以前的代码,包括随机文件处理方法,所有计时器和计数器等。我只是坚持这一部分。
该程序经历以下代码:
var lines = File.ReadAllLines(@"LOCATION");
textBox3.Text = lines[new Random().Next(lines.Length)];
从文件中选择一个随机单词。然而,整个单词正在文本框3中显示,而不是像我希望的那样。关于如何进行的想法我完全失去了。我在网上找不到类似的东西。
干杯, [R
答案 0 :(得分:1)
根据单词的长度从文件中选择一个随机单词后,决定要隐藏多少个单词,然后随机替换这些单词。
这样的事情 -
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);
}
答案 1 :(得分:1)
下面的代码将替换至少一半带下划线的字符。代码接受一个单词并一直生成随机数,直到它用下划线替换了至少一半的字符。
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;
}