powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передвижение окружности в VB
25 сообщений из 38, страница 1 из 2
Передвижение окружности в VB
    #36611482
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите пожалуйста, что нужно в этой программе подкаректировать, чтобы при нажатии, например, F3, окружность либо оставляла либо не оставляла след? спасибо заранее большое. Я уже не знаю что придумать:-)

Option Explicit
Dim x, y, a, r As Integer


Private Sub Form_Load()
Scale (0, 100)-(100, 0)
r = InputBox("Задайте радиус:-)")
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Circle (x, y), r, vbRed, , , 0.5

Label1 = r
a = 5
Select Case KeyCode:

Case vbKeyRight: x = x + a
If x > (100 - r) Then x = 100 - r
If (x < (100 - r)) And (x = (100 - r)) Then x = x + r

Case vbKeyLeft: x = x - a
If x < r Then x = r
If (x > r) And (x = r) Then x = x - r

Case vbKeyDown: y = y - a
If y < r Then y = r
If (y > r) And (y = r) Then y = y - r

Case vbKeyUp: y = y + a
If y > (100 - r) Then y = 100 - r
If (y < (100 - r)) And (y = (100 - r)) Then y = y + r

Case vbKeyF2: a = InputBox("На сколько увеличим радиус??")
r = r + (a)

End Select
End Sub
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611492
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж не первый пост, пора научиться пользоваться тэгами
Код: plaintext
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.
37.
Option Explicit
Dim x, y, a, r As Integer


Private Sub Form_Load()
Scale ( 0 ,  100 )-( 100 ,  0 )
r = InputBox("Задайте радиус:-)")
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Circle (x, y), r, vbRed, , ,  0 . 5 

Label1 = r
a =  5 
Select Case KeyCode:

Case vbKeyRight: x = x + a
If x > ( 100  - r) Then x =  100  - r
If (x < ( 100  - r)) And (x = ( 100  - r)) Then x = x + r

Case vbKeyLeft: x = x - a
If x < r Then x = r
If (x > r) And (x = r) Then x = x - r

Case vbKeyDown: y = y - a
If y < r Then y = r
If (y > r) And (y = r) Then y = y - r

Case vbKeyUp: y = y + a
If y > ( 100  - r) Then y =  100  - r
If (y < ( 100  - r)) And (y = ( 100  - r)) Then y = y + r

Case vbKeyF2: a = InputBox("На сколько увеличим радиус??")
r = r + (a)

End Select
End Sub
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611496
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не поняла...:-(
вообще не могу сама разобраться, а здесь все серьезные слишком...
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611502
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91я не поняла...:-(
вообще не могу сама разобраться, а здесь все серьезные слишком...

1) Почитайте правила форума.
2) Нажмите "Цитировать" и увидите, как правильно оформляется код
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611504
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91подскажите пожалуйста, что нужно в этой программе подкаректировать, чтобы при нажатии, например, F3, окружность либо оставляла либо не оставляла след?

можно вот так

Код: plaintext
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.
37.
38.
39.
40.
41.
42.
43.
44.
Option Explicit

Private x As Integer, y As Integer, a As Integer, r As Integer
Private TraceMode As Boolean


Private Sub Form_Load()
Scale ( 0 ,  100 )-( 100 ,  0 )
r = InputBox("Задайте радиус:-)")
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If Not TraceMode Then Me.Refresh
Circle (x, y), r, vbRed, , ,  0 . 5 

Label1 = r
a =  5 
Select Case KeyCode:

Case vbKeyRight: x = x + a
If x > ( 100  - r) Then x =  100  - r
If (x < ( 100  - r)) And (x = ( 100  - r)) Then x = x + r

Case vbKeyLeft: x = x - a
If x < r Then x = r
If (x > r) And (x = r) Then x = x - r

Case vbKeyDown: y = y - a
If y < r Then y = r
If (y > r) And (y = r) Then y = y - r

Case vbKeyUp: y = y + a
If y > ( 100  - r) Then y =  100  - r
If (y < ( 100  - r)) And (y = ( 100  - r)) Then y = y + r

Case vbKeyF2: a = InputBox("На сколько увеличим радиус??")
r = r + (a)

Case vbKeyF3
TraceMode = Not TraceMode

End Select
End Sub
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611518
Ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо, но он не хочет так работать. выделяет TraceMode как ошибку:-(
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611519
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ane4kaaa91Shocker.Pro, спасибо, но он не хочет так работать. выделяет TraceMode как ошибку:-(

Какая именно ошибка?
На какой именно строке?
У меня все работает.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611523
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, обратите внимание, если вы хотите определить несколько переменных в одной строке, то писать надо не так:
Код: plaintext
Dim x, y, a, r As Integer
а вот так
Код: plaintext
Dim x As Integer, y As Integer, a As Integer, r As Integer
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611525
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо за совет:-)
А ошибку выдает такую, что выделяет желтым строку
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) и выделяет именно TraceMode.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611531
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91А ошибку выдает такую

Текст ошибки дайте.
Ctrl-F5 нажмите - будет сообщение об ошибке.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611538
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, мне очень не удобно, но я вас немного не понимаю...:-(
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611540
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91Shocker.Pro, мне очень не удобно, но я вас немного не понимаю...:-(

Что непонятно?
Как нажать Ctrl-F5?

Сначала нажать и удерживать Ctrl, потом нажать F5, потом отпустить F5, потом отпустить Ctrl
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611542
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вроде не блондинка я... всё сделала так...
выделили мне TraceMode ...
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611547
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91вроде не блондинка я... всё сделала так...
выделили мне TraceMode ...

1) Нажмите Ctrl-F5
2) Больше ничего не нажимайте
3) Опишите, что вы видите на экране или выложите сюда снимок экрана
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611554
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я нажала, всё посмотрела, но никаких изменений кроме выделения строки
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If Not TraceMode Then Me.Refresh я не увидела!
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611564
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расширим задачу

1) Закройте свой проект вместе с VB
2) Откройте VB
3) Загрузите свой проект
4) Нажмите Ctrl-F5
5) Больше ничего не нажимайте
6) Опишите, что вы видите на экране или выложите сюда снимок экрана
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611609
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, мне надо сказать вам огромное спасибо! я оч вам благодарствую, я наверно вам надоела глупыми вопросами:-) я нашла собственную ошибку! работает все, очень клево:-)
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611619
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91Shocker.Pro, мне надо сказать вам огромное спасибо! я оч вам благодарствую, я наверно вам надоела глупыми вопросами:-) я нашла собственную ошибку! работает все, очень клево:-)

Вообще, странновато у вас работает. Сначала рисуется окружность по СТАРЫМ координатам. Затем вычисляются НОВЫЕ координаты, но окружность по новым координатам не рисуется, а ждет следующего нажатия клавиши.

То есть я жму вниз-вниз-вниз, окружность перемещается вниз. Затем, жму "вправо", окружность перемещается вниз. И только после следующего нажатия любой клавиши переместится вправо.

P.S. Если совсем элементарные вопросы по работе VB (не по алгоритмам, которые могли бы быть интересны другим участникам форума), чтобы было оперативно - можем общаться по аське. Отпишите мне на мыло (оно указано в профиле) свою аську - я постучусь.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611621
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо:-) я могу обращаться если в что??
а этот нюанс по поводу чтобы вправо - то сначало вниз можно как то поправить?
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611629
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91я могу обращаться если в что??

Можете. Главное, чтобы было желание разобраться в том, как работает, а не просто тупо списать.

ane4kaaa91а этот нюанс по поводу чтобы вправо - то сначало вниз можно как то поправить?

Конечно. Надо выводить окружность ПОСЛЕ того, как вычислены новые координаты, а не ДО.

В принципе, в программе много логических ошибок, но все зависит от цели. Если вам надо сделать ДЗ и забыть об этом - одно, если изучать программирование - другое.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611633
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я далека от программирования, но в этой задачке оч долго разбиралась, пыталась ее понять. только вот с этим следом загвостка была.Спасибо вам:-) А Если использовать Cls то происходит же полностью очитска экрана??? а вот еще вопрос, а можно убирать след, с помощью второй окружности, но цвет ее совпадает с фоном?? :-)
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611640
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91А Если использовать Cls то происходит же полностью очитска экрана???

В принципе, да, Cls тут будет даже правильней использовать, чем .Refresh

ane4kaaa91а вот еще вопрос, а можно убирать след, с помощью второй окружности, но цвет ее совпадает с фоном?? :-)

Можно, но тогда лучше вообще поступить по-другому: создать объект Shape с типом "окружность" и двигать именно этот объект (то есть отказаться от оператора Circle в принципе).
Но в этом варианте будет труднее работать со следом.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611644
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо, очень понятно все объяснили:-) попробую сейчас:-) а как объяснить TraceMode?
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611649
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ane4kaaa91а как объяснить TraceMode?

А что именно непонятно?
TraceMode - это переменная, которую я ввел сам, в смысле - это не какая-то стандартная VB-шная функция.
...
Рейтинг: 0 / 0
Передвижение окружности в VB
    #36611650
ane4kaaa91
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ааа, не стандартная. А преподаватель мой поймет? :-))))))
как вот именно это ему объяснять?
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передвижение окружности в VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]