在C#hangman游戏上工作,无法弄清楚如何检测多个字母

时间:2014-08-09 02:41:11

标签: c# regex

我是新手,所以我决定做一个刽子手游戏,但我已经遇到了问题。该游戏适用于没有重复字母(果汁,椅子,乐趣)的单词。我从英语词典中的所有单词列表中随机选择了单词,每当我得到一个包含多个字母(苹果,饼干,气球)的单词时,它只会显示该单词的第一次出现。

代码大约是100行,所以我把它放在pastebin上以方便:http://pastebin.com/tWRqweQg

我已经尝试了几种方法,但我没有想到任何想法。我的一些想法如下:

  
      
  • 使用for循环将每个单词添加到列表中。如果下一个字符迭代在该列表中......(在这里丢失)
  •   
  • 使方法返回true或false,具体取决于在单词中是否多次找到猜到的字符(那么什么?)
  •   
  • 其他一些不完整的想法
  •   

必须有办法做到这一点。如果你想知道我在说什么,只需将我的代码中的单词变量设置为一个包含多个字母的字符串。任何帮助将不胜感激!

PS:我不明白代码行是这样的: if(a = x for q in q [1] .append)[可怕的例子]或其他复杂的代码。如果代码需要很长且效率低,那很好!我以后会学习效率!

2 个答案:

答案 0 :(得分:0)

这里的简单修复就是代码

if (j.Equals(leguess))// If the character = the letter guess
{
    int index = word.IndexOf(j);// Get the index of j
    while (index > -1)
    {
        guess = guess.Remove(index, 1).Insert(index, j.ToString());
        index = word.IndexOf(j, index + 1);
    }
}

我已插入一个while循环来替换猜到的单词中的所有匹配项

答案 1 :(得分:0)

只需替换你的foreach

foreach (char j in wordchar)// Iterate through every character
{

    if (j.Equals(leguess))// If the character = the letter guess
    {
        int index = word.IndexOf(j);// Get the index of j
        guess = guess.Remove(index, 1).Insert(index, j.ToString());
    }

}

使用此代码

int index = -1;
while ((index = word.IndexOf(leguess, index+1)) != -1)
    guess = guess.Remove(index, 1).Insert(index, leguess);