gpt4 book ai didi

for 循环中的 C# 数组产生相同的随机整数值

转载 作者:行者123 更新时间:2023-11-30 13:45:05 25 4
gpt4 key购买 nike

<分区>

这是我第一次发帖。希望这个问题不会太困惑。我正在为初学者 C# 书做一个实验室,现在被困住了。我正在创建一个“Dog Race Simulator”程序。当我点击“开始比赛”按钮时,狗会随着计时器的每一次滴答以 1 到 30 之间的随机整数向右移动,直到它们到达终点。我尝试过以多种不同的方式切换代码,在线阅读有关数组、Random 类和 for 循环的内容,但出于某种原因,无论如何,狗总是以相同的速度移动。他们需要在每次滴答时以不同的随机速率移动。

一个解决方案会很好,但我真正想知道的是,为什么我的代码不起作用? 在循环遍历数组的“i”值时,难道不应该为每只狗分配一个不同的随机数吗?

图片可以在这里找到: http://makingspidersense.com/dograce.png

这是 Form1 代码:

Greyhound[] dogs = new Greyhound[4];

private void startRaceButton_Click(object sender, EventArgs e)
{
timer1.Start();
dogs[0] = new Greyhound() { MyPictureBox = dog1PictureBox };
dogs[1] = new Greyhound() { MyPictureBox = dog2PictureBox };
dogs[2] = new Greyhound() { MyPictureBox = dog3PictureBox };
dogs[3] = new Greyhound() { MyPictureBox = dog4PictureBox };
}

private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 4 ; i++)
{
if (dogs[i] != null)
{
dogs[i].Randomizer = new Random();
dogs[i].Distance = dogs[i].Randomizer.Next(1, 30);
dogs[i].Move();
}
}
}

这是 Greyhound 类代码:

class Greyhound
{
public PictureBox MyPictureBox;
public bool GoingForward = true;
public Random Randomizer;
public int Distance;

public void Move()
{
if (MyPictureBox != null)
{
if (GoingForward == true)
{
MyPictureBox.Left += Distance;
if (MyPictureBox.Left >= MyPictureBox.Parent.Width - MyPictureBox.Width)
{
GoingForward = false;
}
}
}
}
}

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