'these are global
Dim flake(150) As snow Dim side As Integer Dim x As Integer Dim y As Integer Dim z As Integer Dim index As Integer Dim index2 As Integer Dim floor() As ground Dim bottom As Integer Dim size As Integer 'formload event Private Sub Form_Load() Randomize bottom = Screen.Height - 300 side = Screen.Width ReDim floor(side) Label1.Top = worldfrm.Top + (worldfrm.Height - 100) 'this will make your flakes For index = 0 To 150 Call makesnow(index) Next 'this will track the snow on the ground For index = 0 To side floor(index).color = vbBlack floor(index).gx = index floor(index).gy = bottom Next 'this is where the action takes place interval 300 Timer1.Enabled = True End Sub 'function to make snow Public Sub makesnow(index As Integer) Dim xpos As Integer Dim ypos As Integer Dim zpos As Integer 'random positions for flakes xpos = Rnd * side ypos = (Rnd * (bottom - 20)) zpos = Rnd * 3 flake(index).sx = xpos flake(index).sy = ypos flake(index).sz = zpos If flake(index).sz = 0 Then flake(index).sv = 30 ElseIf flake(index).sz = 1 Then flake(index).sv = 20 ElseIf flake(index).sz = 2 Then flake(index).sv = 10 Else flake(index).sv = 5 End If End Sub 'erase old snow flakes Public Sub oldsnow() For index = 0 To 150 size = flake(index).sz + 1 worldfrm.DrawWidth = size PSet (flake(index).sx, flake(index).sy), vbBlack 'Circle (flake(index).sx, flake(index).sy), 'flake(index).sz + 1, vbBlack Next End Sub ' draw new flakes Public Sub newsnow() For index = 0 To 150 size = flake(index).sz + 1 'Circle (flake(index).sx, flake(index).sy), 'flake(index).sz + 1, vbWhite worldfrm.DrawWidth = size PSet (flake(index).sx, flake(index).sy), vbWhite Next End Sub 'plot new position of snow Public Sub movesnow() Dim wind As Integer For index = 0 To 150 'determine if there is wind wind = Rnd * 4 flake(index).sy = flake(index).sy + flake(index).sv If wind = 1 Then flake(index).sx = flake(index).sx + flake(index).sv ElseIf win = 2 Then flake(index).sx = flake(index).sx - flake(index).sv ElseIf wind = 3 Then flake(index).sx = flake(index).sx + (flake(index).sv * 2) ElseIf wind = 4 Then flake(index).sx = flake(index).sx - (flake(index).sv * 2) End If 'if flakes go offsides then wrap around If flake(index).sx >= side Then flake(index).sx = 0 End If If flake(index).sx <= 0 Then flake(index).sx = side End If ="commento"> 'flakes on the ground?? index2 = flake(index).sx If flake(index).sy >= floor(index2).gy Then PSet (flake(index).sx, flake(index).sy), vbWhite floor(flake(index).sx).gy = floor(flake(index).sx).gy - 1 Call makesnow(index) End If 'flakes on label1??? If (flake(index).sy >= Label1.Top) And (flake(index).sx <= Label1.Width) Then PSet (flake(index).sx, flake(index).sy), vbWhite Call makesnow(index) End If Next End Sub ="commento"> ' the main event loopp for processing Private Sub Timer1_Timer() Call oldsnow Call movesnow Call newsnow End Sub ="commento"> 'this is the module stuff user type snow, holds your snow.. Public Type snow sx As Integer sy As Integer sz As Integer sv As Integer End Type ="commento"> 'user type ground, go figure... Public Type ground gy As Integer gx As Integer color As ColorConstants End Type Inputs: you need just a form set to black background and a label1 and a timer. you will also need to place a module in your project. |