直接上代码
Private W As Integer
Private H As Integer
Private Type Stars
X As Double
Y As Integer
AddX As Integer
AddY As Integer
End Type
Private Star(1000) As Stars
Private Accelarate As Boolean
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
Private WithEvents Timer1 As Timer
Private Sub Form_Activate()
MoveTo = move_forward
Accelarate = False
WindowState = 2
W = ScaleWidth
H = ScaleHeight
For i = 1 To 150
Star(i).X = W / 2
Star(i).Y = H / 2
RandomX:
Randomize
Star(i).AddX = Int(Rnd * 29) - Int(Rnd * 29)
If Star(i).AddX = 0 Then GoTo RandomX
RandomY:
Star(i).AddY = Int(Rnd * 19) - Int(Rnd * 19)
If Star(i).AddY = 0 Then GoTo RandomY
Next
End Sub
Private Sub Form_Load()
Me.BorderStyle = 0
Me.Caption = ""
Me.DrawWidth = 5
Me.BackColor = &H0&
Me.FillColor = &HFFFFFF
Me.ScaleMode = 3
Set Timer1 = Me.Controls.Add("VB.timer", "timer1")
Timer1.Enabled = True
Timer1.Interval = 10
Move Screen.Width / 2 - Width / 2, Screen.Height / 2 - Height / 2
End Sub
Private Sub Timer1_Timer()
For i = 1 To 150
SetPixel hdc, W / 2, H / 2, &H404040
Select Case Abs(W / 2 - (Star(i).X))
Case Is < 20
col = &H0&
Size = 1
Case Is < 80
col = &H404040
Size = 1
Case Is < 150
col = &H808080
Size = 2
Case Is < 200
col = &HC0C0C0
Size = 3
Case Is < 250
col = &HFFFFFF
Size = 4
Case Else
col = &HFFFFFF
Size = 5
End Select
Select Case Abs(H / 2 - (Star(i).Y))
Case Is < 20
If Size = 0 Then
Size = 1
col = back5
End If
Case Is < 80
If Size = 0 Then
col = &H404040
Size = 1
End If
Case Is < 150
If Size < 2 Then
Size = 2
col = &H808080
End If
Case Is < 200
If Size < 3 Then
Size = 3
col = &HC0C0C0
End If
Case Is < 250
If Size < 4 Then
Size = 4
col = &HFFFFFF
End If
Case Else
If Size < 5 Then
Size = 5
col = &HFFFFFF
End If
End Select
SetPixel hdc, W / 2, H / 2, col
Select Case Size
Case 1
SetPixel Me.hdc, Star(i).X, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y + Star(i).AddY, col
Case 2
SetPixel Me.hdc, Star(i).X, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y + Star(i).AddY, col
Case 3
SetPixel Me.hdc, Star(i).X, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1, Star(i).Y - 1, &H0&
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y - 1 + Star(i).AddY, col
Case 4
SetPixel Me.hdc, Star(i).X, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1, Star(i).Y - 1, &H0&
SetPixel Me.hdc, Star(i).X, Star(i).Y - 1, &H0&
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y - 1 + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y - 1 + Star(i).AddY, col
Case 5
SetPixel Me.hdc, Star(i).X + a, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1 + a, Star(i).Y, &H0&
SetPixel Me.hdc, Star(i).X - 1 + a, Star(i).Y - 1, &H0&
SetPixel Me.hdc, Star(i).X + a, Star(i).Y - 1, &H0&
SetPixel Me.hdc, Star(i).X + a, Star(i).Y - 2, &H0&
SetPixel Me.hdc, Star(i).X - 1 + a, Star(i).Y - 2, &H0&
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y - 1 + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y - 1 + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X + Star(i).AddX, Star(i).Y - 2 + Star(i).AddY, col
SetPixel Me.hdc, Star(i).X - 1 + Star(i).AddX, Star(i).Y - 2 + Star(i).AddY, col
End Select
Star(i).X = Star(i).X + Star(i).AddX
Star(i).Y = Star(i).Y + Star(i).AddY
Star(i).AddX = Star(i).AddX + Sgn(Star(i).AddX) * (Size / 5)
Star(i).AddY = Star(i).AddY + Sgn(Star(i).AddY) * (Size / 5)
If Accelarate Then
Star(i).AddX = Star(i).AddX + Sgn(Star(i).AddX) * Size
Star(i).AddY = Star(i).AddY + Sgn(Star(i).AddY) * Size
End If
If Star(i).X < 0 Or Star(i).X > ScaleWidth Or Star(i).Y < 0 Or Star(i).Y > ScaleHeight Then
Star(i).X = W / 2
Star(i).Y = H / 2
RandomX:
Randomize
Star(i).AddX = Int(Rnd * 29) - Int(Rnd * 29)
If Star(i).AddX = 0 Then GoTo RandomX
RandomY:
Star(i).AddY = Int(Rnd * 19) - Int(Rnd * 19)
If Star(i).AddY = 0 Then GoTo RandomY
End If
Next
End Sub
文章评论