Как задать границы "убегающей" кнопке?
Код для "убегающей" кнопки
// в полях:
Random random = new Random();
//в MouseMove:
button1.Location = new Point(random.Next(this.Width - button1.Width), random.Next(this.Height - button1.Height));
Но иногда конпка "вылетает" за пределы Формы.
- Как сделать, чтобы она по-прежнему меняла локацию рандомно, но оставалась в рамках Формы?
- Также можно ли сделать так, чтобы на каждый пятый MouseMove она меняла скорость движения (по умолчанию движется очень быстро и "поймать" её кликом очень сложно)?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Если по-простому, то можно что-то такое попробовать.
int step = 200;
int x = button1.Location.X + random.Next(-step, step);
int y = button1.Location.Y + random.Next(-step, step);
if (x + button1.Width > this.Width) x = this.Width - button1.Width;
if (x < 0) x = 0;
if (y + button1.Height > this.Height) x = this.Height - button1.Height;
if (y < 0) y = 0;
button1.Location = new Point(x, y);
По второму вопросу не подскажу, но думаю, что это не сложная задача, суть в том, чтобы правильно задать step в начале кода, это и есть максимальный шаг смещения.