我是新手,所以我决定做一个刽子手游戏,但我已经遇到了问题。该游戏适用于没有重复字母(果汁,椅子,乐趣)的单词。我从英语词典中的所有单词列表中随机选择了单词,每当我得到一个包含多个字母(苹果,饼干,气球)的单词时,它只会显示该单词的第一次出现。
代码大约是100行,所以我把它放在pastebin上以方便:http://pastebin.com/tWRqweQg
我已经尝试了几种方法,但我没有想到任何想法。我的一些想法如下:
- 使用for循环将每个单词添加到列表中。如果下一个字符迭代在该列表中......(在这里丢失)
- 使方法返回true或false,具体取决于在单词中是否多次找到猜到的字符(那么什么?)
- 其他一些不完整的想法
必须有办法做到这一点。如果你想知道我在说什么,只需将我的代码中的单词变量设置为一个包含多个字母的字符串。任何帮助将不胜感激!
PS:我不明白代码行是这样的: if(a = x for q in q [1] .append)[可怕的例子]或其他复杂的代码。如果代码需要很长且效率低,那很好!我以后会学习效率!
答案 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);