Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Заполнение Randomize в С#

34K
08 декабря 2010 года
Dinar1623
57 / / 14.11.2010
Помогите плиз написать приложение.На форме расположены 3 pictureBox'a,которые перемещаются по форме сверху вниз.После того как они доходят до конца формы они снова появляются но в новом расположении.
Проблема в том что pictureBox'ы иногда появляются друг на друге при запуске приложения.Какое условие нужно поставить что бы этого не было???

В этом варианте pictureBox'ы появляются друг на друге:(

Код:
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;
                    }
297
09 декабря 2010 года
koodeer
1.2K / / 02.05.2009
Получение значения для первого пикчабокса оставляем как есть. А вот для второго и третьего нужны циклы do - while. Условие продолжения цикла - полученные координаты совпадают с координатами предыдущих пикчабоксов.


Если высота всех пикчабоксов одинаковая и не меняется, то значение pictureBox*.Height / 2 лучше сделать константой, чтобы не вычислять каждый раз.
34K
09 декабря 2010 года
Dinar1623
57 / / 14.11.2010
Цитата: 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;
                    }


[COLOR="Blue"]Если да[/COLOR], то подскажите плиз как проверить совпадают ли полученные координаты с координатами предыдущих пикчабоксов.
5
09 декабря 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Dinar1623
подскажите плиз как проверить совпадают ли полученные координаты с координатами предыдущих пикчабоксов.



Rectangle.InstersectsWith

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог