Advertisement
Guest User

Untitled

a guest
Jun 12th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Box 40, 140, 320, 20, OFF
  2. DrawScreen
  3.  
  4. Randomize 3
  5.  
  6. Const noisew = 400
  7. Const noiseh = 300
  8.  
  9. Dim noisepattern(noisew, noiseh) As Float
  10. Dim prenoise(noisew-1, noiseh-1) As Float
  11. Dim noise(noisew-1, noiseh-1, 1) As Float
  12.  
  13. Function getinterpnoise#(i, j)
  14.     ii# = Float(i/16.0)
  15.     jj# = Float(j/16.0)
  16.     aa# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#))*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#))*(1.0-(ii#-RoundDown(ii#)))
  17.     bb# = noisepattern(RoundDown(ii#)+1, RoundDown(jj#)+1)*(ii#-RoundDown(ii#))+noisepattern(RoundDown(ii#), RoundDown(jj#)+1)*(1.0-(ii#-RoundDown(ii#)))
  18.     Return bb#*(jj#-RoundDown(jj))+aa#*(1.0-(jj#-RoundDown(jj#)))
  19. EndFunction
  20.  
  21. For i = 0 To noisew
  22.     For j = 0 To noiseh
  23.         noisepattern(i, j) = Rnd(-1.0, 1.0)
  24.     Next j
  25.     If i Mod 20 = 0 Then
  26.         Box 40, 140, 320, 20, OFF
  27.         Box 42, 142, 316*.333*i/float(noisew), 16
  28.         DrawScreen
  29.     EndIf
  30. Next i
  31.  
  32. For i = 0 To noisew-1
  33.     For j = 0 To noiseh-1
  34.         prenoise(i, j) = getinterpnoise#(i, j)
  35.     Next j
  36.     If i Mod 20 = 0 Then
  37.         Box 40, 140, 320, 20, OFF
  38.         Box 42, 142, 316*.333*(1.0+i/float(noisew)), 16
  39.         DrawScreen
  40.     EndIf
  41. Next i
  42.  
  43. For i = 1 To noisew-2
  44.     For j = 1 To noiseh-2
  45.         noise(i, j, 0) = (prenoise(i,j+1)-prenoise(i,j-1))
  46.         noise(i, j, 1) = (prenoise(i+1,j)-prenoise(i-1,j))
  47.     Next j
  48.     If i Mod 20 = 0 Then
  49.         Box 40, 140, 320, 20, OFF
  50.         Box 42, 142, 316*.333*(2.0+i/float(noisew)), 16
  51.         DrawScreen
  52.     EndIf
  53. Next i
  54.  
  55. Dim parts(9999, 2) As Float
  56. For i = 0 To 1999
  57.     parts(i,2)=-1.0
  58. Next i
  59. ptimer = Timer()
  60.  
  61. spawn = 10
  62. drawx# = 200
  63. drawy# = 150
  64. t=Timer()-10
  65. Repeat
  66.     spawn = spawn + UpKey() - DownKey()+1
  67.     spawned = 0
  68.     ra = 0
  69.     ang# = 0'WrapAngle(ang+.2)
  70.     cosa# = Cos(ang)
  71.     sina# = Sin(ang)
  72.     kk#=(Timer()-t)/1000.0*60
  73.     t=Timer()
  74.     Lock
  75.         For i = 0 To 9999
  76.             If parts(i,2)>0 Then
  77.                 ra = ra + 1
  78.                 vx# = noise(Int(parts(i, 0)), Int(parts(i, 1)), 0)
  79.                 vy# = noise(Int(parts(i, 0)), Int(parts(i, 1)), 1)
  80.                 parts(i,0) = parts(i,0)+vx*kk'+cosa*vx+sina*vy
  81.                 parts(i,1) = parts(i,1)+vy*kk-0.3*kk'-sina*vx+cosa*vy-.3
  82.                 parts(i,2) = parts(i,2)-1.25*kk
  83.                 col = max(0, Min(255, parts(i,2)))
  84.                 Color col, (col*.055)^2.0, 0
  85.                 For x = parts(i,0)-1 To parts(i,0)+1
  86.                     Line x, parts(i,1)-1, x, parts(i,1)+1
  87.                 Next x
  88.             Else
  89.                 If spawned<spawn And (KeyDown(cbkeyspace) Or (Timer()Mod 3000)<500) Then
  90.                     kulma = Rand(2)
  91.                     drawx# = (drawx+200+Cos(90+120*kulma)*120)/2.0
  92.                     drawy# = (drawy+170-Sin(90+120*kulma)*120)/2.0
  93.                     parts(i,0) = drawx//Rnd(80.0, 320.0)
  94.                     parts(i,1) = drawy+20//Rnd(180.0, 200.0)
  95.                     parts(i,2) = 255.0
  96.                     spawned = spawned + 1
  97.                 EndIf
  98.             EndIf
  99.         Next i
  100.     Unlock
  101.     Color 255, 255, 255
  102.     Text 10, 220, "fp"+"s is "+Str(FPS())
  103.     Text 10, 240, "rendering "+Str(ra)+" particles"
  104.     Text 10, 260, "spawning "+Str(spawned)+" per frame"
  105.     Text 10, 280, "spawn "+spawn
  106.     DrawScreen
  107. Forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement