【发布时间】:2014-04-03 00:26:42
【问题描述】:
我正在尝试用 C# 制作 Hangman,在游戏开始时你需要一个单词来猜测,所以游戏不会很无聊你可以得到很多单词(一次只能一个)。但是当你开始一个新游戏时,你不会得到一个你已经猜到的词。所以我必须选择一个我还没有选择的随机字符串。
我尝试了多种方法来解决这个问题,但都没有成功。
方法#1:
在这里我运行 NewWord 函数,然后将 numberOfTries 加 1。
string[] wordArr = { "PROGRAMMERING", "CSHARP", "STOL", "ELEV", "VISUAL", "STUDIO" };
int numberOfTries = 0;
int randomNumber = -1;
protected string NewWord()
{
if (!(numberOfTries >= wordArr.Length))
{
randomNumber = RandomNumberFromTo(0, (wordArr.Length - numberOfTries));
ChangeWord(((wordArr.Length - numberOfTries)-1), randomNumber);
return wordArr[(randomNumberl)];
}
else
{
return "There are no more new words!! :(";
}
}
private int RandomNumberFromTo(int NumberA, int NumberB)
{
System.Threading.Thread.Sleep(2);
Random minRandomGenerator = new Random();
System.Threading.Thread.Sleep(3);
return minRandomGenerator.Next(NumberA, NumberB);
}
protected void ChangeWord (int NumberA, int NumberB)
{
string cashe1 = wordArr[NumberA];
wordArr[NumberA] = wordArr[NumberB];
wordArr[NumberB] = cashe1;
return;
}
我在 StackOverflow 上找到了方法 #2,但它不起作用。
这里我也运行 NewWord 函数,然后将 numberOfTries 加 1。
string[] wordArr = { "PROGRAMMERING", "CSHARP", "STOL", "ELEV", "VISUAL", "STUDIO" };
int numberOfTries = 0;
Random random = new Random();
protected string NyttOrd()
{
if (!(numberOfTries >= wordArr.Length))
{
var names = new List<string> { "PROGRAMMERING", "CSHARP", "STOL", "ELEV", "VISUAL", "STUDIO" };
System.Threading.Thread.Sleep(3);
int index = random.Next(names.Count);
var name = names[index];
names.RemoveAt(index);
return name;
}
else
{
return "There are no more new words!! :(";
}
}
我还尝试了一个版本,其中有两个不同的数组,一个是 Int-Array,第二个是 String-Array。真的很乱,没有用。
我对 C# 也很陌生,我只知道基础知识,例如 +-/*、转换、函数和数组。
【问题讨论】:
-
很难遵循方法中的差异,但不要在方法中声明 Random 类。只需在整个代码中使用单个实例。
-
Pierre-Luc,他要求相同的方法,但要求 Int 不是字符串。磅。抱歉代码乱七八糟...会移动随机类:)
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
好的,谢谢,我会记住的! :)
标签: c# arrays string random combinations