Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Image2.Left = Image2.Left + 20
If Image2.Left >= Form1.ScaleWidth Then
Image2.Left = 720
Timer1.Enabled = False
End If
End Sub
Повтор или одно и тоже делать при не завершении цикла ну не знаю как назвать?ООП?? ))
у меня в форму 2 изображение вставлены Один солдат другая пуля. При нажатии мышки на форму пуля летит от солдата прямо. И пока пуля не залетит за край формы нельзя следующию пулю пустить.
Код:
Можете объяснить как сделал чтобы можно было много пуль выпустить?
А еще как мне сделать массив чтобы в него записывались 2 переменные
mas(i).x=2
mas(i).y=3
както так как сделать?
А я только сделал так
Код:
Dim X1(1000), Y1(1000), i, j As Integer
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
i = i + 1
Text1.Text = i
X1(i) = X
Y1(i) = Y
Cls
If i > 25 Then Circle (X1(i - 25), Y1(i - 25)), 50
If i > 50 Then Circle (X1(i - 50), Y1(i - 50)), 50
If i > 75 Then Circle (X1(i - 75), Y1(i - 75)), 50
If i > 100 Then Circle (X1(i - 100), Y1(i - 100)), 50
If i >= 1000 Then i = 100
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
i = i + 1
Text1.Text = i
X1(i) = X
Y1(i) = Y
Cls
If i > 25 Then Circle (X1(i - 25), Y1(i - 25)), 50
If i > 50 Then Circle (X1(i - 50), Y1(i - 50)), 50
If i > 75 Then Circle (X1(i - 75), Y1(i - 75)), 50
If i > 100 Then Circle (X1(i - 100), Y1(i - 100)), 50
If i >= 1000 Then i = 100
End Sub
Я вам только концепцию программы дальше сами
Создайте массив Image2() допустим из 10 пуль, массив можно располжить в любом месте формы т.к свойство Visible = Fasle
Код:
'число пуль
Dim NumberBullets as Integer
Private Sub Form_Load()
NumberBullets = 1
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case NumberBullets
Case IS <= 10
Image2(NumberBullets).Visible = True
Case Else
NumberBullets = 0
End Select
NumberBullets = NumberBullets + 1
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
For i% = 1 To NumberBullets
' НУЖНО ЗАПОМНИТЬ ПОЗИЦИЮ КАЖДОЙ ПУЛИ. Для этого создаем массив memPosBulletX
' Примерно так дальше Вы сами.
Image2(i).Left = Image2(i).Left + 20
If Image2(i).Left >= Form1.ScaleWidth Then
Image2(i).Left = 720
Next i
Timer1.Enabled = False
DoEvents
End If
End Sub
Dim NumberBullets as Integer
Private Sub Form_Load()
NumberBullets = 1
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case NumberBullets
Case IS <= 10
Image2(NumberBullets).Visible = True
Case Else
NumberBullets = 0
End Select
NumberBullets = NumberBullets + 1
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
For i% = 1 To NumberBullets
' НУЖНО ЗАПОМНИТЬ ПОЗИЦИЮ КАЖДОЙ ПУЛИ. Для этого создаем массив memPosBulletX
' Примерно так дальше Вы сами.
Image2(i).Left = Image2(i).Left + 20
If Image2(i).Left >= Form1.ScaleWidth Then
Image2(i).Left = 720
Next i
Timer1.Enabled = False
DoEvents
End If
End Sub
2)В модуле
Код:
Public Type myType
x As Integer
y As Integer
End Type
x As Integer
y As Integer
End Type
' в форме
Код:
Dim myArray(10) As myType
myArray(0).x = 100
myArray(0).y = 50
myArray(0).x = 100
myArray(0).y = 50
Ну еще на форме есть кнопка и текстовое поле в текстовое поля вводишь какое то число и оно создает столько то ячеек, text,label, circle. Неопределенное количество.
У меня были 1 курсовая работа на Visual studio 2005 с++ windows forms aplication в котором мне надо было сделать игру шарики http://games.rambler.ru/game/id/balls может и мог бы тоже так массив сделать но я хотел чтобы сами они создавались но не сделал я.
Или другую японский кроссворд http://www.bestcrosswords.ru/jp/ хотел сделать сперва чтобы пользователь вводил сколько надо создать ячеек и создавалось столько то. И задание было по кроссворду пользователь вводит все параметры а программа решает кроссворд. Я вот первое что хотел сделать это столько сколько пользователь напишет создать ячеек не создал. А дальше не пробовал.
2 )
Спасибо то что хотел.
А вот VB2010 без проблем, но в VB2010 нельзя создать массив объектов путем копирования объектов как это делалось в VB6. Очень странно почему Билл отказался.
Теперь только программно можно создать массив объектов.
Ну если нельзя в vb6 то тогда может покажете как в VB2010 так сделать как я хочу или так невозможно?
нашол уже что хотел только на vc++
Цитата: UserNet2008
В VB6 динамический массив объектов создать нельзя.
Как же
Load Image1(index) еще никто не отменял
Цитата:
Load Image1(index) еще никто не отменял
[COLOR="blue"]Load[/COLOR] - это загрузка массива, но не создания [COLOR="red"]динамического[/COLOR] массива. Должна быть директива [COLOR="blue"]NEW[/COLOR].
Если в вкраце Вы должны создать программно [COLOR="red"]НОВЫЙ[/COLOR] объект, а объекту нужны свойства, ну [COLOR="blue"]Load[/COLOR] здесь не при делах.
Я может Вас не правильно понял, дайте код. Как Вы создаёте [COLOR="red"]динамический[/COLOR] массив при помощи [COLOR="blue"]LOAD[/COLOR] покумекуем вместе.
Всё очень просто.Создаём объект с именем ImageArr,например,и ставим ему свойство Index в 0(изначально там пусто,НЯП).Затем с помощью Load ImageArr(i)(i=1…N) создаём новые экземпляры(с помощью Unload,соответственно,уничтожаем) и задаём им нужные свойства(если объект по умолчанию скрыт,ставим Visible=True)
Короче на VB6 вот это я сделать не смог
Код:
Dim NumberPic(0) As PictureBox
' изменить размерность массива без потери существующих данных
ReDim Preserve NumberPic(5)
For i% = 1 To 5
NumberPic(i) = New PictureBox
'добавим события GotFocus, LostFocus, Click можно и другие
AddHandler NumberPic(i).MouseEnter, AddressOf MyNumberPic_MouseEnter
AddHandler NumberPic(i).MouseLeave, AddressOf MyNumberPic_MouseLeave
AddHandler NumberPic(i).Click, AddressOf NumberPic_Click
'добавим контролы для NumberPic
Me.Controls.Add(NumberPic(i))
Next
' изменить размерность массива без потери существующих данных
ReDim Preserve NumberPic(5)
For i% = 1 To 5
NumberPic(i) = New PictureBox
'добавим события GotFocus, LostFocus, Click можно и другие
AddHandler NumberPic(i).MouseEnter, AddressOf MyNumberPic_MouseEnter
AddHandler NumberPic(i).MouseLeave, AddressOf MyNumberPic_MouseLeave
AddHandler NumberPic(i).Click, AddressOf NumberPic_Click
'добавим контролы для NumberPic
Me.Controls.Add(NumberPic(i))
Next
Надо учесть,что 1й контрол должен на форме присутствовать.Чисто из кода я вроде ни разу не создавал