powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание объекта shape программно
25 сообщений из 181, страница 4 из 8
Создание объекта shape программно
    #38867762
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronТеперь когда первый уже коснется края он не вызовет третий шар, нужно чтобы второй ударился для появления третьего((все потому, что ты сделал глобальную переменную, которая непонятно как инициализируется и сбрасывается, то есть там полная ерунда с событиями.

Сделай как я сказал.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867763
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
Friend function OneStep(Byref Item as ShaperType) as Boolean
...
End Function
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867765
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim b as Boolean

...
b = OneStep(myshape)
MsgBox b
...
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867766
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronЧто же мне ее объявлять в 2 местах ? в таймере и в one_step ?ее вообще не надо объявлять
vdekameronOne_step это же процедура, как я ее функцией сделаю типа Booleanты сказал, что тебе все понятно, каждая строчка 17188988

вернись и вникай дальше, я же просил сначала разобраться, потом делать дальше
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867798
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proвернись и вникай дальше, я же просил сначала разобраться, потом делать дальше

Shocker.Proты сказал, что тебе все понятно, каждая строчка
Sub Command1_Click() - процедура события click по кнопке Command1
Dim a As Integer - объявление переменной a как целочисленной обычной степени точности
a = 2 - присваиваем переменной a значение =2
a = MySum(a, 4) - Вызываем процедуру MySum передавая в нее параметры 2 для a и 4 для b , возвращая 18
MsgBox CStr(a) - выводим сообщением 18 (уже как строка)
Мне понятна каждая строчка но я теряюсь, не знаю что нужно сейчас сделать!
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867801
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возьми листок чистой бумаги и нарисуй алгоритм движения с помощью квадратиков/ромбиков/стрелочек. когда всё нарисуешь , выложи картинку того, что наваял сюда, мы обсудим
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867809
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно и вот этим воспользоваться
http://download.cnet.com/Code-Visual-to-Flowchart/3000-2212_4-10072756.html
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867825
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneвозьми листок чистой бумаги и нарисуй алгоритм движения с помощью квадратиков/ромбиков/стрелочек. когда всё нарисуешь , выложи картинку того, что наваял сюда, мы обсудим
Чет я не понял. Полностью этот код вырисовать графически на бумаге? или что-то произвольное?
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867837
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.Proты сказал, что тебе все понятно, каждая строчка
Sub Command1_Click() - процедура события click по кнопке Command1
Dim a As Integer - объявление переменной a как целочисленной обычной степени точности
a = 2 - присваиваем переменной a значение =2
a = MySum(a, 4) - Вызываем процедуру MySum передавая в нее параметры 2 для a и 4 для b , возвращая 18
MsgBox CStr(a) - выводим сообщением 18 (уже как строка)
Мне понятна каждая строчкаа вот эта строчка? ты про нее ничего не сказал
Код: vbnet
1.
Function MySum(a As Integer, b As Integer)



мой косяк, правильно было бы так
Код: vbnet
1.
Function MySum(a As Integer, b As Integer) As Integer



но тем не менее.

vdekameronвозвращая 18А что мешает возвращать True или False????
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867842
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой вгляд, когда ты сделаешь как я сказал, то тебе и нам будет уже понятнее, что нужно сделать с алгоритмом появления нового шара, только сначала сделай это - не хочу на тебя вывалисать сразу кучу, давай последовательно
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867867
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Код: vbnet
1.
Function MySum(a As Integer, b As Integer) As Integer

Функция с параметрами а и b . MySum в данном случае задается как целочисленное.
Вы имеете в виду сделать так?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Function One_step(ByRef mama As ShaperType) As Boolean
With mama.Sh
    .Left = .Left + mama.StepX
    .Top = .Top + mama.StepY
    If .Left >= Form1.Width - .Width Then One_step = True: mama.StepX = -200 * Rnd Else One_step = False
    If .Left <= 0 Then One_step = True: mama.StepX = 200 * Rnd
    If .Top >= Form1.Height - .Width Then mama.StepY = -300 * Rnd
    If .Top <= 0 Then mama.StepY = 300 * Rnd
End With
End Function
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867876
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а что у вас функция false всегда возвращает.
мне кажется надо вам вернуться к алгоритму программы, а не к реализации. вы пока плохо представляете, что и как должно работать и при каких условиях
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867877
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это плохой стиль, не пишите так:
Код: vbnet
1.
If .Left >= Form1.Width - .Width Then One_step = True: mama.StepX = -200 * Rnd Else One_step = False



пишите так всегда:

Код: vbnet
1.
2.
3.
4.
5.
6.
If .Left >= Form1.Width - .Width Then 
     One_step = True
     mama.StepX = -200 * Rnd 
Else 
     One_step = False
End If
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867879
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вместо Form1.Width надо юзать Form1.ScaleWidth
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867885
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneмне кажется надо вам вернуться к алгоритму программы, а не к реализации. вы пока плохо представляете, что и как должно работать и при каких условиях
Да нет, алгоритм я хорошо представляю. Дело в недостатке знаний.

Konst_Oneну а что у вас функция false всегда возвращае
Почему.Возвращает true при ударе о край формы.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867889
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите
Код: vbnet
1.
MsgBox Form1.Width - Form1.ScaleWidth



то что у вас внутри формы работает в рамках ScaleWidth/ScaleHeight
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867893
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronKonst_Oneмне кажется надо вам вернуться к алгоритму программы, а не к реализации. вы пока плохо представляете, что и как должно работать и при каких условиях
Да нет, алгоритм я хорошо представляю. Дело в недостатке знаний.

Konst_Oneну а что у вас функция false всегда возвращае
Почему.Возвращает true при ударе о край формы.

да True возвращает. но условия я бы переписал, как-то всё не логично
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867896
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneто что у вас внутри формы работает в рамках ScaleWidth/ScaleHeight
Ну за этот совет спасибо! Но не в этом же дело.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867904
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneда True возвращает. но условия я бы переписал, как-то всё не логично
Код: vbnet
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Option Explicit
Dim colShapes() As ShaperType
Private Type ShaperType
   Sh As Shape
   StepX As Integer
   StepY As Integer
End Type

Private Sub Form_Load()
Show
  ReDim colShapes(0)
  eddshape
  Timer1.Enabled = True
  
End Sub

Private Sub Timer1_Timer()
 Dim i As Integer
  For i = 1 To UBound(colShapes)
    One_step colShapes(i)
  Next i
  If One_step = True Then eddshape
End Sub

Private Function One_step(ByRef mama As ShaperType) As Boolean
With mama.Sh
    .Left = .Left + mama.StepX
    .Top = .Top + mama.StepY
    If .Left >= Form1.ScaleWidth - .Width Then
       One_step = True
       mama.StepX = -200 * Rnd
    Else
       One_step = False
    End If
    If .Left <= 0 Then
       One_step = True
       mama.StepX = 200 * Rnd
    End If
    If .Top >= Form1.ScaleHeight - .Width Then mama.StepY = -300 * Rnd
    If .Top <= 0 Then mama.StepY = 300 * Rnd
End With
End Function

Private Sub eddshape()

Dim check As ShaperType
  Set check.Sh = Me.Controls.Add("VB.Shape", "sh" & UBound(colShapes) + 1)
  check.Sh.Visible = 1
  check.Sh.Shape = 3
  check.StepX = 200 * Rnd
  check.StepY = 300 * Rnd
  ReDim Preserve colShapes(UBound(colShapes) + 1)
  colShapes(UBound(colShapes)) = check
End Sub


Как только переходит в процедуру таймера пишет argument not optional и подсвечивает One_step
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867915
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Timer1_Timer()
 Dim i As Integer
  For i = 1 To UBound(colShapes)
    If One_step colShapes(i) Then 
         eddshape
    End If
  Next i
  
End Sub
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867916
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Timer1_Timer()
 Dim i As Integer
  For i = 1 To UBound(colShapes)
    If One_step(colShapes(i)) Then 
         eddshape
    End If
  Next i
  
End Sub



скобки забыл
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867922
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronКак только переходит в процедуру таймера пишет argument not optional и подсвечивает One_stepПотому что ты пытаешься вызвать функцию второй раз, но уже без аргумента. Ты так и не разобрался, что такое функция (((

vdekameronПочему.Возвращает true при ударе о край формы.только о левый или правый край, но не о верхний или нижний.

Ок, теперь тебе надо решить, в какой момент появляется новый шар?

Если при ударе ЛЮБОГО шара о край формы, то смотри код Кости.

Только при таком раскладе скорость появления шаров будет расти в геометрической прогрессии, так как шаров становится все больше и больше.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867928
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает но на этот раз при каждом касании любого шара появляется сразу 3 новых)))
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867933
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЕсли при ударе ЛЮБОГО шара о край формы, то смотри код Кости.
Так код Кости и взял. Выпуливает сразу по 3 новых шара
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38867936
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну этот код не мой, я только подправил вызовы.
я же писал, что условия надо исправить, там что-то накручено в функции.
...
Рейтинг: 0 / 0
25 сообщений из 181, страница 4 из 8
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание объекта shape программно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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