home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD7395732000.psc / Particle.bas < prev   
Encoding:
BASIC Source File  |  2000-07-03  |  2.6 KB  |  89 lines

  1. Attribute VB_Name = "Particle"
  2. Public Type Partical
  3. X As Single
  4. Y As Single
  5. z As Single
  6. a As Single
  7. v As Long
  8. End Type: Public p(1000) As Partical
  9.  
  10. Const Pi = 3.14159265358979 'Trig
  11. Const PIdiv18 = Pi / 18
  12. Public Sine(35) As Single, CoSn(35) As Single
  13.  
  14. Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  15. Const SRCAND = &H8800C6
  16. Const SRCPAINT = &HEE0086
  17. Const SRCCOPY = &HCC0020
  18.  
  19. Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
  20. Public Keys(0 To 4) As Integer 'Add more as needed
  21.  
  22. Sub Math_BTT()
  23. For i = 0 To 35
  24. Sine(i) = Sin(i * PIdiv18)
  25. CoSn(i) = Cos(i * PIdiv18)
  26. Next
  27. End Sub
  28.  
  29. Sub Move(ID As Integer, Direction As String, Vel As Long, TurningFriction As Single, Road_Air_Friction As Single)
  30. Select Case Direction
  31. Case "Left"
  32. If p(ID).v > 0 Then
  33. p(ID).a = p(ID).a + (Rnd * 1): If p(ID).a > 35 Then p(ID).a = 0
  34. ElseIf p(ID).v < 0 Then
  35. p(ID).a = p(ID).a - (Rnd * 1): If p(ID).a < 0 Then p(ID).a = 35
  36. End If
  37. If p(ID).v > 0 Then
  38. p(ID).v = p(ID).v - TurningFriction
  39. ElseIf p(ID).v < 0 Then
  40. p(ID).v = p(ID).v + TurningFriction
  41. End If
  42. Case "Right"
  43. If p(ID).v > 0 Then
  44. p(ID).a = p(ID).a - (Rnd * 1): If p(ID).a < 0 Then p(ID).a = 35
  45. ElseIf p(ID).v < 0 Then
  46. p(ID).a = p(ID).a + (Rnd * 1): If p(ID).a > 35 Then p(ID).a = 0
  47. End If
  48. If p(ID).v > 0 Then
  49. p(ID).v = p(ID).v - TurningFriction
  50. ElseIf p(ID).v < 0 Then
  51. p(ID).v = p(ID).v + TurningFriction
  52. End If
  53. Case "Forward"
  54. p(ID).v = p(ID).v + Vel
  55. Case "Reverse"
  56. p(ID).v = p(ID).v - Vel
  57. Case Else: 'Coast
  58. End Select
  59.  
  60. p(ID).X = ((p(ID).X * 50) + (p(ID).v * Sine(p(ID).a))) / 50
  61. p(ID).Y = ((p(ID).Y * 50) + (p(ID).v * CoSn(p(ID).a))) / 50
  62.  
  63. Select Case p(ID).v
  64. Case Is > 0
  65. If Not p(ID).v = 0 Then p(ID).v = p(ID).v - Road_Air_Friction
  66. Case Is < 0
  67. If Not p(ID).v = 0 Then p(ID).v = p(ID).v + Road_Air_Friction
  68. End Select
  69. End Sub
  70.  
  71. Sub DrawPIC(ID As Integer, SourceDC As Long, MaskDC As Long, DestDC As Long, W As Long, H As Long, Offset1 As Integer, offset2 As Integer)
  72. If Not DetectCollision Then
  73. BitBlt DestDC, p(ID).X + Offset1, p(ID).Y + offset2, W, H, MaskDC, 0, 0, SRCAND
  74. Else
  75. Pl.score = Pl.score - 5
  76. End If
  77. BitBlt DestDC, p(ID).X + Offset1, p(ID).Y + offset2, W, H, SourceDC, 0, 0, SRCPAINT
  78. End Sub
  79.  
  80. Sub DrawPOINT(ID As Integer, Color As Long, PictureBox As Object)
  81. PictureBox.PSet (p(ID).X, p(ID).Y), Color
  82. End Sub
  83.  
  84.  
  85.  
  86. Sub SetXY(ID As Integer, X As Single, Y As Single)
  87. p(ID).X = X: p(ID).Y = Y
  88. End Sub
  89.