我正在开发一款游戏,游戏中的角色是随机生成的,包括他们的名字。我打算将名称分为2-4个部分(前缀,中间,后缀);每个部分将是一个短的(1-4个字符)字符串,将从文件中随机选择并组合以创建全名。例如,如果文件中选定的部分是'bor‘、'o’和'mir',则角色的名称应为"Boromir“。
填充这个文件的理想方式是什么(就像我说的,它需要包含大量的1-4个字符串),序列化它,然后根据需要随机选择这些字符串?
我真的没有太多的想法可以放弃;我以前从来没有做过这样的事情,但任何提示或建议都肯定会受到感谢。谢谢。
发布于 2013-06-03 23:55:06
假设您将名称存储在一个文本文件中,每行包含一个名称子部分,您可以使用System.IO.File类中的ReadAllLines()方法将所有名称读取到string[]中
http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx
类似地,您可以使用WriteAllLines()将string[]写回文件
http://msdn.microsoft.com/en-us/library/92e05ft3.aspx
将文件读入下一个后,可以使用System.Random类string[] ()方法从数组中选择一个随机字符串
http://msdn.microsoft.com/en-us/library/9b3ta19y.aspx
使用模运算符将结果限制为string[]的有效索引
发布于 2013-06-04 00:25:05
因此,我编写了一个我在评论中所暗示的快速示例。我使用一个windows窗体应用程序作为我的示例运行时。当表单加载时,它从各个文件中读取名称部分一次,然后获取随机值以形成一个名称。
名称parts将存储在纯文本文件中,每行包含一个part,如下所示:
prefix.txt
far
bar
dun
brat您将对每个文件使用相同的格式(每行一个单词)。
现在,有趣的部分:
public partial class Form1 : Form
{
private readonly Random _random = new Random();
private string[] _prefixParts;
private string[] _middleParts;
private string[] _suffixParts;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Only read the data from each file once as this could be expensive
_prefixParts = PopulateFromFile("prefix.txt"); // alter your path as necessary
_middleParts = PopulateFromFile("middle.txt");
_suffixParts = PopulateFromFile("suffix.txt");
}
private void button1_Click(object sender, EventArgs e)
{
// Generate a random name
randomNameLabel.Text = GetRandomName();
}
private string[] PopulateFromFile(string path)
{
return File.ReadAllLines(path);
}
private string GetRandomName()
{
// this will get a random name part from each of the arrays, concatenate and return the complete name
return GetRandomNamePart(_prefixParts) + GetRandomNamePart(_middleParts) + GetRandomNamePart(_suffixParts);
}
private string GetRandomNamePart(string[] array)
{
// this will return a random value from the array
return array[_random.Next(array.Length)];
}
}https://stackoverflow.com/questions/16900574
复制相似问题