private void timer1_Tick(object sender, EventArgs e)
{
//Задаем движение препятствия
pictureBox1.Top += (pictureBox1.Height / 2);
pictureBox2.Top += (pictureBox2.Height / 2);
pictureBox3.Top += (pictureBox2.Height / 2);
//Дошло ли препятствие до нижней границы
if ((pictureBox1.Top + pictureBox1.Height >= this.Height)||(pictureBox2.Top + pictureBox2.Height >= this.Height))ж
{
pictureBox1.Visible = false;
pictureBox1.Top = 1;
pictureBox2.Visible = false;
pictureBox2.Top = 1;
pictureBox3.Visible = false;
pictureBox3.Top = 1;
//Препятствие не должно выходить за левую или правую границу и появляться на друг друге.
pictureBox1.Left = rnd.Next(this.Width - pictureBox1.Width);
{
необходимое условие
}
pictureBox2.Left = rnd.Next(this.Width - pictureBox2.Width);
{
необходимое условие
}
pictureBox3.Left = rnd.Next(this.Width - pictureBox3.Width);
{
необходимое условие
}
pictureBox1.Visible = true;
pictureBox2.Visible = true;
pictureBox3.Visible = true;
}
Заполнение Randomize в С#
Проблема в том что pictureBox'ы иногда появляются друг на друге при запуске приложения.Какое условие нужно поставить что бы этого не было???
В этом варианте pictureBox'ы появляются друг на друге:(
Код:
Если высота всех пикчабоксов одинаковая и не меняется, то значение pictureBox*.Height / 2 лучше сделать константой, чтобы не вычислять каждый раз.
Цитата: koodeer
А вот для второго и третьего нужны циклы do - while. Условие продолжения цикла - полученные координаты совпадают с координатами предыдущих пикчабоксов..
Вот так:
Код:
{
pictureBox1.Left = rnd.Next(this.Width - pictureBox1.Width);
pictureBox1.Visible = true;
do
pictureBox2.Left = rnd.Next(this.Width - pictureBox2.Width);
while (координаты совпадают с предыдущими координатами)
pictureBox2.Visible = true;
do
pictureBox3.Left = rnd.Next(this.Width - pictureBox3.Width);
while (координаты совпадают с предыдущими координатами)
pictureBox3.Visible = true;
}
pictureBox1.Left = rnd.Next(this.Width - pictureBox1.Width);
pictureBox1.Visible = true;
do
pictureBox2.Left = rnd.Next(this.Width - pictureBox2.Width);
while (координаты совпадают с предыдущими координатами)
pictureBox2.Visible = true;
do
pictureBox3.Left = rnd.Next(this.Width - pictureBox3.Width);
while (координаты совпадают с предыдущими координатами)
pictureBox3.Visible = true;
}
[COLOR="Blue"]Если да[/COLOR], то подскажите плиз как проверить совпадают ли полученные координаты с координатами предыдущих пикчабоксов.
Цитата: Dinar1623
подскажите плиз как проверить совпадают ли полученные координаты с координатами предыдущих пикчабоксов.