我应该创建一个游戏,其中选择了文本文件中的随机单词。然后对该词进行加扰并为用户显示。然后用户必须尝试猜测原始单词。完成后,按“检查答案”,显示是否正确。这是我第一次在C#中做任何事情(我已经习惯了Java)所以如果适用,我将非常感谢基本的解释。我已经编写了大部分程序,但是当显示乱码时,它不显示整个加扰字,每个字只有3个字母,有时相同的3个字母。我查看了我的代码并且无法找到错误的内容。我做了一些快速测试,我知道正在读入文件,而origWords []数组确实存有一个完整的单词。这让我相信问题在jumbleWords()方法中。我感谢任何帮助。
编辑:我将代码缩减到我认为的问题区域。
private string jumbleWords(String origWord)
{
// converts word to char array
char [] charArray = origWord.ToCharArray();
// creates bool array with length of charArray
bool [] letterCheck = new bool [charArray.Length];
for (int i = 0; i < letterCheck.Length; i++)
{
letterCheck[i] = false;
}
Random letterAssign = new Random();
string jumble = null;
for (int index = 0; index < charArray.Length; index++) //jumbling of word
{
// picks random letter (number position of array)
int letterChosen = letterAssign.Next(charArray.Length);
if (letterCheck[letterChosen] == false) //check if letter has been used
{
jumble += charArray[letterChosen]; //adds letter to jumble string
// changes bool array position to true so it can't be used again
letterCheck[letterChosen] = true;
}
}
return jumble;
}
答案 0 :(得分:0)
当您检查是否已使用某个特定字母时,如果已使用,则只需继续下一个位置即可。相反,你需要再试一次,直到你收到一封没有被使用过的信件。最简单的方法就是减少循环变量,以便再次尝试插槽。
另外,你选择单词的逻辑还没有检查单词是否被选中 - 你只需从每个文件中选择一个随机单词,所以你经常会得到同一个单词一遍又一遍地。