【发布时间】:2014-12-04 04:25:36
【问题描述】:
我试图制作一个随机名称生成器,这是我想出的代码:
private void GenerateName()
{
if (GeneratedName == "")
{
GenerateConsonant();
consonantCurrent = consonant1;
GenerateVowel();
vowelCurrent = vowel1;
GenerateConsonant();
consonantCurrent = consonant2;
GenerateConsonant();
consonantCurrent = consonant3;
GenerateVowel();
vowelCurrent = vowel2;
}
GeneratedName = consonant1 + vowel1 + consonant2 + consonant3 + vowel2;
}
private void GenerateConsonant()
{
Random randomNumber = new Random();
GlobalVariables.random = randomNumber.Next(2, 22);
if (GlobalVariables.random == 1)
{
consonantCurrent = "b";
}
if (GlobalVariables.random == 2)
{
consonantCurrent = "c";
}
if (GlobalVariables.random == 3)
{
consonantCurrent = "d";
}
if (GlobalVariables.random == 4)
{
consonantCurrent = "f";
}
if (GlobalVariables.random == 5)
{
consonantCurrent = "g";
}
if (GlobalVariables.random == 6)
{
consonantCurrent = "h";
}
if (GlobalVariables.random == 7)
{
consonantCurrent = "j";
}
if (GlobalVariables.random == 8)
{
consonantCurrent = "k";
}
if (GlobalVariables.random == 9)
{
consonantCurrent = "l";
}
if (GlobalVariables.random == 10)
{
consonantCurrent = "m";
}
if (GlobalVariables.random == 11)
{
consonantCurrent = "n";
}
if (GlobalVariables.random == 12)
{
consonantCurrent = "p";
}
if (GlobalVariables.random == 13)
{
consonantCurrent = "q";
}
if (GlobalVariables.random == 14)
{
consonantCurrent = "r";
}
if (GlobalVariables.random == 15)
{
consonantCurrent = "s";
}
if (GlobalVariables.random == 16)
{
consonantCurrent = "t";
}
if (GlobalVariables.random == 17)
{
consonantCurrent = "v";
}
if (GlobalVariables.random == 18)
{
consonantCurrent = "w";
}
if (GlobalVariables.random == 19)
{
consonantCurrent = "x";
}
if (GlobalVariables.random == 20)
{
consonantCurrent = "y";
}
if (GlobalVariables.random == 21)
{
consonantCurrent = "z";
}
}
private void GenerateVowel()
{
Random randomNumber = new Random();
GlobalVariables.random = randomNumber.Next(2, 6);
if (GlobalVariables.random == 1)
{
vowelCurrent = "a";
}
if (GlobalVariables.random == 2)
{
vowelCurrent = "e";
}
if (GlobalVariables.random == 3)
{
vowelCurrent = "i";
}
if (GlobalVariables.random == 4)
{
vowelCurrent = "o";
}
if (GlobalVariables.random == 5)
{
vowelCurrent = "u";
}
}
}
}
运行后,我发现它给了我一个空结果...... 如果有明显的错误,请告诉我,因为我是智障:l 或者,如果它永远行不通,您可以向我展示一种方法,然后我会尝试使其适应我的程序。
顺便说一句,我正在制作一个大战略游戏,它会使用它来为角色生成随机名称
编辑: 我试图做的是每次调用 GenerateConsonant() 和 GenerateVowel() 时,它们都会将随机字符设置为 Current 值。然后在每个设置后,它将自己设置为某个辅音或元音。在此之后,它们将被放在一起形成一个名字......
【问题讨论】:
-
对于初学者,您在第一个 if 语句中的变量分配是向后的。
-
consonantCurrent = consonant1;是倒退的。您将 consonant1 分配给 consonantCurrent。为了让 GeneratedName 实际上有一个值,您需要反过来使用它。 -
谢谢,我会测试一下...我太笨了!
-
一个问题是每次调用
GenerateConsonant时都会创建一个新的Random实例。你应该在类范围内创建一次Random实例(即private readonly Random RandomNumber = new Random();否则你会得到很多重复的辅音。 -
GenerateConsonant()和GenerateVowel()方法没有返回辅音和元音的任何特殊原因?