将西蒙从“随机”转变为“确定性”

时间:2014-02-28 14:06:07

标签: c# game-engine

我正在制作一个西蒙说的游戏,但不像普通的西蒙说的游戏(播放随机序列),我希望使序列非随机并基于instructions.text

例如:instructions.text可以包含“红色,黄色,红色,绿色”。

游戏会将文本解释为序列的内容。

现在,我的代码会让序列变得随机......请你能否按我正确的方向推动我如何使这个非随机。提前谢谢。

        public Color [] newSequence (int length)
    {
        Color [] array = new Color[length];
        Random rand = new Random(DateTime.Now.Millisecond);// don't inline w/ colors[] - wont be random

        for (int i=0; i<length; i++) {
            array[i] = colors[rand.Next(0,4)];
        }
        this.sequence=array;
        return array;
    }

1 个答案:

答案 0 :(得分:3)

加载游戏后,您可以将instructions.txt文件的内容读入Array。然后,此Array将用作序列缓冲区。

这是一个简短(不完整)的例子。您可以在每一行提供integer值,或者人类可读的颜色定义(红色,绿色,蓝色),然后将其解析为integer对应物。

public Color [] newSequence(int length) {
    string line;
    int counter = 0;
    Color [] array = new Color[length];
    System.IO.StreamReader file = new System.IO.StreamReader("instructions.txt");

    while ((line = file.ReadLine()) != null) {
        array[i] = /* instantiate your new color here, based upon the value on each line */
    }
    file.close();
    this.sequence = array;
    return array;
}

文件输入代码段的参考:here

或者,如果您希望不再需要instructions.txt文件,请使用静态种子初始化随机数生成器。

Random rand = new Random(293102);

这样,渐进值将始终相同。