Я ещё только учусь!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Areostar
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 07.09.2006 (Чт) 9:29
Откуда: Израиль

Я ещё только учусь!!!

Сообщение Areostar » 21.10.2006 (Сб) 9:43

ПО этому и вопрос такой глупый!

КАк заставить геометрическую фигуру нарисованую на форме двигаться и при том при достижении края формы отталкиваться от них.!!!


Зарание благодарен!!!!!

Areostar
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 07.09.2006 (Чт) 9:29
Откуда: Израиль

Сообщение Areostar » 21.10.2006 (Сб) 9:44

Забыл уточнить Visual Basic 6.0

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 21.10.2006 (Сб) 9:59

По таймеру пересчитывать координаты в соответствии с выбранной формулой, рисовать фигуру на новом месте, при x>=Form.Width - фигура.Width/2 или x<=0 или y>=Form.Height - фигура.Height/2 или y<=0 менять соответствующее направление.
Лучший способ понять что-то самому — объяснить это другому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 21.10.2006 (Сб) 10:00

1. Читать правила.
2. Менять название темы
3. Пользоваться кнопкой Правка.
4. Учить математику.

З.Ы. До написания вопроса какие-либо порывы сделать желаемое были, али как?
Весь мир матрица, а мы в нем потоки байтов!

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 21.10.2006 (Сб) 23:09

Скринсейвер делаешь?
Тогда юзай ещё ShowCursor

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Сообщение |( () ( T |/| |( » 21.10.2006 (Сб) 23:52

Смотря кокая фигура. Для окружности:

-------------------------
Dim x, y, vx, vy As Integer
Private Sub Form_Load()
x = Me.ScaleWidth / 2
y = Me.ScaleHeight / 2
vx = Rnd * 20
vy = Rnd * 20
End Sub
Private Sub Timer1_Timer()
Me.Cls
Me.Circle (x, y), 20
x = x + vx: y = y + vy
If x <= 20 Or x >= Me.ScaleWidth - 20 Then vx = -vx
If y <= 20 Or y >= Me.ScaleHeight - 20 Then vy = -vy
End Sub
--------------------------

если для какой другой, то проверяй координаты вершин, если они <0 или > Me.ScaleWidth и Me.ScaleHeight то меняй скорость на противоположную.

вот например для квадрата:

-------------------------------
Private Type vec
x As Integer
y As Integer
End Type
Dim F(3) As vec
Dim x, y, vx, vy As Integer
Private Sub Form_Load()
x = Me.ScaleWidth / 2
y = Me.ScaleHeight / 2
F(0).x = x - 10: F(0).y = y - 10
F(1).x = x + 10: F(1).y = y - 10
F(2).x = x + 10: F(2).y = y + 10
F(3).x = x - 10: F(3).y = y + 10
vx = Rnd * 20
vy = Rnd * 20
End Sub
Private Sub Timer1_Timer()
Me.Cls
Me.Line (F(0).x, F(0).y)-(F(1).x, F(1).y)
Me.Line (F(1).x, F(1).y)-(F(2).x, F(2).y)
Me.Line (F(2).x, F(2).y)-(F(3).x, F(3).y)
Me.Line (F(3).x, F(3).y)-(F(0).x, F(0).y)
For i = 0 To 3
If F(i).x <= 20 Or F(i).x >= Me.ScaleWidth - 20 Then vx = -vx
If F(i).y <= 20 Or F(i).y >= Me.ScaleHeight - 20 Then vy = -vy
Exit For
Next
For i = 0 To 3
F(i).x = F(i).x + vx: F(i).y = F(i).y + vy
Next
End Sub
------------------------------

P.S. Рисовать лучше через API.

Areostar
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 07.09.2006 (Чт) 9:29
Откуда: Израиль

Сообщение Areostar » 26.10.2006 (Чт) 10:41

Большое спасибо!!!

Areostar
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 07.09.2006 (Чт) 9:29
Откуда: Израиль

Сообщение Areostar » 26.10.2006 (Чт) 10:44

При компиляции программы комп постоянно выдаёт Run-time error '9'

Программу 10 раз перепроверил! Что это может быть!??? :? :?:

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 26.10.2006 (Чт) 10:49

не обманывай нас, восточный юноша !
при компиляции не бывает Run-time error !

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 26.10.2006 (Чт) 11:54

Ошибка периода выполнения бывает именно во время выполнения, причем тут компиляция?

При запуске из под среды ошибка есть? Если есть, то показывай место где она происходит, если нет, то отслеживай процесс выполнения или через MsgBox или в лог-файл пиши
Весь мир матрица, а мы в нем потоки байтов!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.10.2006 (Чт) 12:00

вот посмотри на это, может что для себя полезное найдешь :wink:
Вложения
Moving Shapes.rar
(8.36 Кб) Скачиваний: 28


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 51

    TopList