Я работаю над C# Lab в Head First C# book.A Day at the Races - Head first 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;
}
}
метод Run:
public bool Run()
{
MyRandom = new Random();
int distance = MyRandom.Next(1, 5);
MyPictureBox.Left += distance;
if(MyPictureBox.Left >= RacetrackLenght)
return false;
else
return true;
}
Хотя я согласен с основной причиной * проблемы, являющейся предлагаемым дубликатом, похоже, что уже существует достаточная поддержка для использования одного экземпляра здесь ... так что было бы полезно иметь отдельный ответ для этого, IMO , –
@jon: Как обычно, я читал материал, который вы пишете (или публиковали), но я просто не понимаю: это просто еще один вопрос о том, почему мои Randoms не являются случайными вообще. – TaW
@TaW: Не очевидно, потому что есть * попытка * использовать один и тот же «Случайный» каждый раз - видеть, как инициализируются массивы. Просто эта попытка сорвалась, создав новый экземпляр внутри 'Run'. –