gpt4 book ai didi

c# - 赛马日 - Head first C#

转载 作者:行者123 更新时间:2023-11-30 20:42:07 25 4
gpt4 key购买 nike

我正在 Head First C# 书中的 C# 实验室工作。

当我按下开始按钮时 - 狗应该一直跑到其中一只到达终点。每只狗应该以随机速度奔跑,但我所有的狗都以相同的速度奔跑;/

狗初始化:

 GreyhoundArray[0] = new Greyhound(){
MyPictureBox = GreyhoundPictureBox1,
StartingPosition = GreyhoundPictureBox1.Left,
RacetrackLenght = TrackPictureBox.Width - GreyhoundPictureBox1.Width,
MyRandom = MyRandom
};
GreyhoundArray[1] = new Greyhound(){
MyPictureBox = GreyhoundPictureBox2,
StartingPosition = GreyhoundPictureBox2.Left,
RacetrackLenght = TrackPictureBox.Width - GreyhoundPictureBox2.Width,
MyRandom = MyRandom
};
GreyhoundArray[2] = new Greyhound(){
MyPictureBox = GreyhoundPictureBox3,
StartingPosition = GreyhoundPictureBox3.Left,
RacetrackLenght = TrackPictureBox.Width - GreyhoundPictureBox3.Width,
MyRandom = MyRandom
};
GreyhoundArray[3] = new Greyhound(){
MyPictureBox = GreyhoundPictureBox4,
StartingPosition = GreyhoundPictureBox4.Left,
RacetrackLenght = TrackPictureBox.Width - GreyhoundPictureBox4.Width,
MyRandom = MyRandom
};

开始按钮代码:

private void StartButton_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
}

定时器代码:

private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
if (GreyhoundArray[i].Run())
timer1.Enabled = true;
else
timer1.Enabled = false;
}
}

运行方法:

public bool Run()
{
MyRandom = new Random();

int distance = MyRandom.Next(1, 5);
MyPictureBox.Left += distance;

if(MyPictureBox.Left >= RacetrackLenght)
return false;
else
return true;
}

最佳答案

你的 Run方法创建 Random() 的新实例.我怀疑您不想这样做 - 毕竟,您已经得到一个名为 MyRandom 的属性创建数组时要填充的内容。

只需要去掉那一行:

MyRandom = new Random();

看看会发生什么。

实际上,您正在创建 Random 的新实例每次Run()被称为...每个都将从当前时间开始播种。这意味着如果你调用 Run快速连续几次(在任何情况下)你会得到相同的 distance大多数时候,因为种子是相同的。

如果没有额外的创建,您将使用 Random 的相同实例对于所有赛狗,这意味着您将为每次调用 Next 生成可能不同的数字.这只有在同一个线程中才可以 - 请参阅 my article on Random 有关随机性的各种棘手方面的详细信息。

您的代码已经尝试通过设置 MyRandom 来做正确的事情初始化属性 - 只是它随后通过覆盖 Run 中的该属性而搞砸了方法。

关于c# - 赛马日 - Head first C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31635137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com