Заполнение формы шарами - VB

Узнай цену своей работы

Формулировка задачи:

Привет всем!!! Не так давно начал изучать программировании, выбрал для себя VB 6.0, сегодня целый день мучаюсь как заполнить форму шарами. Вот код, но тут одна полоска из шаров, а я хочу чтоб шарики заполняли половину формы .И сразу вопрос, можно ли использовать такую схему для создания игры там где внизу появляется шарик рандомного цвета и им нужно стрелять по шарикам которые находятся на верху и тоже разных цветов. Спасибо
Листинг программы
  1. Private Sub Form_Click()
  2. x = 250
  3. y = 250
  4. z = 250
  5.  
  6. For i = 0 To 9
  7. Circle (x + 500, y), z
  8. x = x + 500
  9. Next
  10. End Sub

Решение задачи: «Заполнение формы шарами»

textual
Листинг программы
  1. Option Explicit
  2. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  3. Dim cc(5) As Long, i As Integer, j As Integer, d As Integer
  4. Const n As Integer = 10, m As Integer = 5
  5. Dim Ball(1 To n, 1 To m) As VB.Shape, myBall As VB.Shape
  6.  
  7. Private Sub Form_Activate()
  8.     d = Me.ScaleWidth \ n
  9.     Load_Balls
  10.     Set_Balls
  11.     Set_MyBall
  12.     Change_Balls_Color
  13.     Change_myBall_Color
  14. End Sub
  15.  
  16. Private Sub Set_Balls(Optional ByVal R As Integer = 1)
  17.      For i = 1 To n
  18.          For j = 1 To m
  19.            Ball(i, j).Top = (j - R) * d: Ball(i, j).Left = (i - 1) * d
  20.            Ball(i, j).Visible = True
  21.            Ball(i, j).Width = d: Ball(i, j).Height = d
  22.            Ball(i, j).BackStyle = 1: Ball(i, j).BorderStyle = 1: Ball(i, j).BorderWidth = 3
  23.            Ball(i, j).Shape = 3
  24.          Next j
  25.     Next i
  26. End Sub
  27.  
  28. Private Sub Set_MyBall()
  29.     myBall.Top = Me.ScaleHeight - d * 2: myBall.Left = Me.ScaleWidth / 2 - d / 2
  30.     myBall.Visible = True
  31.     myBall.Width = d: myBall.Height = d
  32.     myBall.BackStyle = 1: myBall.BorderStyle = 1: myBall.BorderWidth = 3
  33.     myBall.Shape = 3
  34. End Sub
  35.  
  36. Private Sub Load_Balls()
  37.      For i = 1 To n
  38.          For j = 1 To m
  39.            Set Ball(i, j) = Controls.Add("VB.Shape", "B" & i & j, Me)
  40.          Next j
  41.     Next i
  42.     Set myBall = Controls.Add("VB.Shape", "myB", Me)
  43. End Sub
  44.  
  45. Private Sub Change_myBall_Color()
  46.             myBall.BackColor = cc(Int(Rnd * 5))
  47. End Sub
  48.  
  49. Private Sub Change_Balls_Color()
  50.     For i = 1 To n
  51.         For j = 1 To m
  52.             Ball(i, j).BackColor = cc(Int(Rnd * 5))
  53.         Next j
  54.     Next i
  55. End Sub
  56.  
  57. Private Sub Form_Load()
  58.     Me.ScaleMode = 3
  59.     cc(0) = vbRed: cc(1) = vbGreen: cc(2) = vbWhite: cc(3) = vbYellow: cc(4) = vbBlue: cc(5) = vbMagenta
  60.     Randomize
  61.     Me.Width = 6500: Me.Height = 7500
  62. End Sub
  63.  
  64. Private Sub Move_MyBall(ByVal X As Single, Y As Single)
  65.     Dim Dx As Single, Dy As Single, Dxx As Single, Dyy As Single ', R As Single
  66.    Dx = 0.3
  67.     Dx = Dx * Sgn(X - (myBall.Left + d))
  68.     Dy = Dx * ((Y - (myBall.Top + d)) / (X - (myBall.Left + d)))
  69.     Timer1.Enabled = True
  70.     'If Dy >= 0 Then Dy = -Dy 'Exit Sub
  71.    Do Until myBall.Left > Me.ScaleWidth + 100 Or myBall.Left < -100 Or myBall.Top > Me.ScaleWidth + 100 Or myBall.Top < -100
  72.        myBall.Move myBall.Left + Dx, myBall.Top + Dy
  73.        If Crash(myBall.Left, myBall.Top) <> "0:0" Then
  74.             If Crash(myBall.Left, myBall.Top) = "1" Then
  75.                'MsgBox Crash(myBall.Left, myBall.Top) & " Совпало"
  76.               GoTo m1
  77.             Else
  78.                'MsgBox Crash(myBall.Left, myBall.Top) & " Несовпало"
  79.               Dx = Dx: Dy = -Dy
  80.             End If
  81.        End If
  82.        DoEvents
  83.     Loop
  84.     Sleep 500
  85. m1:
  86.     Game_Over
  87.     Set_MyBall
  88.     Change_myBall_Color
  89. End Sub
  90.  
  91. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  92.      Move_MyBall X, Y
  93. End Sub
  94.  
  95. Private Function Crash(ByVal X As Single, Y As Single) As String
  96.     Crash = "0:0"
  97.     For i = 1 To n
  98.         For j = 1 To m
  99.             If (Abs(Ball(i, j).Left - X) < d / 1.5 And Abs(Ball(i, j).Top - Y) < d / 1.5) And Ball(i, j).Visible = True And myBall.Visible = True Then
  100.                 If myBall.BackColor = Ball(i, j).BackColor Then
  101.                       Crash = "1"
  102.                       Ball(i, j).Visible = False
  103.                       myBall.Visible = False
  104.                       Exit Function
  105.                 Else
  106.                       Crash = "0"
  107.                 End If
  108.             End If
  109.         Next j
  110.     Next i
  111. End Function
  112.  
  113. Private Function Game_Over() As Boolean
  114.     Game_Over = True
  115.     For i = 1 To n
  116.         For j = 1 To m
  117.             If Ball(i, j).Visible = True Then Game_Over = False: Exit For
  118.         Next j
  119.     Next i
  120.     If Game_Over Then
  121.        MsgBox "Game Over"
  122.        Set_Balls
  123.        Set_MyBall
  124.        Change_Balls_Color
  125.        Change_myBall_Color
  126.     End If
  127. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы