所以我试图用"下雨的绿色代码"创建一个类似矩阵的程序.在我决定将所有字符串实例放入列表并从中绘制/更新之前,一切都进展顺利.为了实现正确的效果,我需要随机化一些事情.
创建所有字符串并将其存储在您在for循环中看到的列表中.间隔和速度随机数会改变字符串下降的速度,以及各个字符在精灵表中旋转的速度.
出于某种原因,虽然我只是让一面文字一下子掉下来,所有的精灵都以同样的速度旋转.这些类及其各自的功能确实有效......所以问题是我的随机数初始化错误是什么?
for (int i = 0; i < (wWidth / 30); i++)
{
Random random = new Random(new System.DateTime().Millisecond);
float randInterval = NextFloat(random);
int dropSpeed = random.Next(1, 7);
_msList.Add(new MatrixString(chinese, randInterval, dropSpeed, dropSpeed, 1.0f, xOff, 10));
xOff = i * 32;
}
Run Code Online (Sandbox Code Playgroud)
您需要random在for循环外创建实例:
Random random = new Random(new System.DateTime().Millisecond);
for (int i = 0; i < (wWidth / 30); i++)
{
float randInterval = NextFloat(random);
int dropSpeed = random.Next(1, 7);
_msList.Add(new MatrixString(
chinese, randInterval, dropSpeed, dropSpeed, 1.0f, xOff, 10));
xOff = i * 32;
}
Run Code Online (Sandbox Code Playgroud)
在短暂的循环中,播种new System.DateTime().Millisecond将创建相同的种子值.因此,相同的随机数.