У меня есть 4 собаки, которые участвуют в гонках, мне нужно перемещать их по форме, но они не двигаются постепенно, они начинают с линии старта и сразу же телепортируются к линии финиша, не двигаясь между ними. С каждым тактом таймера их location.X увеличивается.
Мне нужен один таймер или 4? В настоящее время у меня есть один, и его интервал установлен на 400.
Это соответствующий код:
private void btnRace_Click(object sender, EventArgs e)
{
btnBet.Enabled = false;
timer1.Stop();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{ while (!isWon)
{
for (i = 0; i < Dogs.Length; i++) // there are four dogs
{
if (Dogs[i].Run()) // Run() returns true if full racetrack is covered by this dog
{
Winner = i + 1;
isWon = true;
MessageBox.Show("We have a winner! Dog #" + Winner);
break;
}
}
}
И в классе собак:
public bool Run()
{
Distance = 10 + Randomizer.Next(1, 4);
p = this.myPictureBox.Location;
p.X += Distance ;
this.myPictureBox.Location = p;
//return true if I won the game
if (p.X >= raceTrackLength)
{
return true ;
}
else
{
return false ;
}
}
Собаки, кажется, делают только один шаг, а затем сразу же появляются на финишной прямой. Что я делаю неправильно?