Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
1

Рандомное перемещение объекта по форме с отскакиванием от бордюров

18.08.2014, 23:24. Показов 2283. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго здоровичка!!! Господа форумчане, помогите, пожалуйста, с задачкой:
На форме пикчербокс с рисунком. При запуске рисунок летает по форме куда хочет (наверное рендом и таймер нужен), отскакивая от границ. На кнопку нажал и он остановился... Спасибо заранее!!!

Добавлено через 7 минут
У меня VB2008
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2014, 23:24
Ответы с готовыми решениями:

Рандомное перемещение объектов по форме
Имеется форма, на ней, скажем, 6 зарезервированных областей координатной плоскости (кстати,как...

Рандомное перемещение кнопок по форме (определенная область формы)
в одну из кнопок выводится ответ, в другие не правильные ответы, кнопки должны перемещаться по оси...

Перемещение фигуры с отскакиванием от стенок
Суть в том, что фигура должна летать по форме, и отскакивать от стенок, все это делается с помощью...

Перемещение объекта по форме
В общем, пишу программу просто для получения навыков, которая бы при нажатии кнопок стрелок...

6
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
18.08.2014, 23:26 2
Цитата Сообщение от timsc1 Посмотреть сообщение
помогите, пожалуйста
Помочь или написать все за тебя? Если помочь, выкладывай свои наработки
VB.NET
1
2
3
4
5
 While 1
            Threading.Thread.Sleep(100)
            Application.DoEvents()
            Button1.Location = New Point(New Random().Next(Height), New Random().Next(Width))
        End While
0
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
18.08.2014, 23:31  [ТС] 3
У меня на форме пикчербокс с рисунком и таймер... Что туда печатать, я не знаю!!! Я делал когда-то движение при нажатии кнопки: команды p.Top = p.Top - 10 и p.Left = p.Left - 10. Движение в разные стороны. А как сделать летающую в разные стороны по своему усмотрению - не знаю!!! Поэтому и обратился!!!
0
edward_freedom
18.08.2014, 23:33
  #4

Не по теме:

timsc1, Пример показал, отталкивайся от него

0
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
18.08.2014, 23:42  [ТС] 5
Спасибо огромное!!! Знать бы, куда отталкиваться...
Цитата Сообщение от edward_freedom Посмотреть сообщение
PictureBox1.Location = New Point(New Random().Next(Height), New Random().Next(Width))
Эту строчку поместил в таймер. Работает, но очень коряво... Попробую разобраться!!!
0
207 / 224 / 87
Регистрация: 21.04.2013
Сообщений: 404
19.08.2014, 00:48 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от timsc1 Посмотреть сообщение
PictureBox1.Location = New Point(New Random().Next(Height), New Random().Next(Width))
Эту строчку поместил в таймер. Работает, но очень коряво... Попробую разобраться!!!
Так будет скакать по форме, а не плавать.

Вариант 1.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Private dX As Integer = 1
    Private dY As Integer = 1
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim x As Integer = PictureBox1.Location.X
        Dim y As Integer = PictureBox1.Location.Y
 
        x = x + dX
        If x = 0 Or (x + PictureBox1.Width) = Me.ClientRectangle.Width Then dX = -dX
 
        y = y + dY
        If y = 0 Or (y + PictureBox1.Height) = Me.ClientRectangle.Height Then dY = -dY
 
        PictureBox1.Location = New Point(x, y)
    End Sub

Вариант 2 (с изменением скорости):
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    Private rand As New Random
 
    Private dX As Integer = 1
    Private dY As Integer = 1
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim x As Integer = PictureBox1.Location.X
        Dim y As Integer = PictureBox1.Location.Y
 
        '
        x = x + dX
        If x <= 0 Then
            x = 0
            dX = rand.Next(1, 6)
 
        ElseIf x + PictureBox1.Width >= Me.ClientRectangle.Width Then
            x = Me.ClientRectangle.Width - PictureBox1.Width
            dX = rand.Next(-5, 0)
 
        End If
 
        '
        y = y + dY
        If y <= 0 Then
            y = 0
            dY = rand.Next(1, 6)
 
        ElseIf y + PictureBox1.Height >= Me.ClientRectangle.Height Then
            y = Me.ClientRectangle.Height - PictureBox1.Height
            dY = rand.Next(-5, 0)
 
        End If
 
        '
        PictureBox1.Location = New Point(x, y)
    End Sub
1
14 / 14 / 2
Регистрация: 27.11.2011
Сообщений: 697
19.08.2014, 12:48  [ТС] 7
Petr_S, Спасибо огромное!!!! Только в варианте 1 он не видит верхней и нижней границы, улетает, а боковые норм... Нашел код у Юпатова Дмитрия. Только у него кнопка бегает, я заменил на рисунок. Всем большое спасибо!!! И дай вам всем БОГ здоровья!!!
0
19.08.2014, 12:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2014, 12:48
Помогаю со студенческими работами здесь

Перемещение объекта по форме
Есть Окно которое содержит несколько кнопок, canvas, на canvas имеется UserControl. При нажатии на...

Перемещение объекта по форме
Как сделать так, чтобы тот же label1 можно было перемещать мышкой свободно? в инете смотрел,...

Перемещение объекта по форме
Добрый день. Столкнулся с некоторыми проблемами. Изучаю С# самостоятельно не давно. Пытаюсь сделать...

Перемещение объекта по форме по таймеру
Как сделать визуализацию? Чтобы допустим перемещался какой-то элемент на форме по времени.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru