Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 2.64 KB | None | 0 0
  1. global DIM seedx#(32768)  ` Seed X
  2. global DIM seedy#(32768)  ` Seed Y
  3. global DIM seedz#(32768)  ` Seed Z
  4. global DIM seeda#(32768)  ` Seed Angle
  5. global DIM seedd#(32768)  ` Seed Depth
  6. global DIM seedb#(32768)  ` Seed Breed
  7. global DIM seedl#(32768)  ` Seed Life
  8. global seednum AS INTEGER = 1
  9.  
  10. global grow_distance# = 0.75
  11. global cx AS INTEGER = 0
  12. global obj AS INTEGER = 1
  13. global count AS INTEGER = 24
  14. global ticks AS INTEGER = 0
  15.  
  16. seedx#(0) = 0     ` Initial Seed X
  17. seedy#(0) = -50   ` Initial Seed Y
  18. seedz#(0) = 0     ` Initial Seed Z
  19. seeda#(0) = 90    ` Initial Seed Angle
  20. seedd#(0) = 0     ` Initial Seed Depth
  21. seedb#(0) = 8     ` Initial Seed Breed
  22. seedl#(0) = 80    ` Initial Seed Life
  23.  
  24. make camera 1
  25. position camera 0,0,-100
  26. backdrop ON
  27. color backdrop 1,rgb(0,0,0)
  28. make light 1
  29. position light 1,-40,0,0
  30. color light 1,rgb(128,0,255)
  31.  
  32. DO
  33.  
  34. ` process each seed
  35. loopseednum = seednum-1
  36. FOR n = 0 TO loopseednum
  37.    seedl#(n) = seedl#(n) - 1
  38.    IF seedl#(n) > 0
  39.       ` Grow up
  40.       seedx#(n) = seedx#(n) + COS(seeda#(n)) * grow_distance#
  41.       seedy#(n) = seedy#(n) + SIN(seeda#(n)) * grow_distance#
  42.       seedz#(n) = seedz#(n) + seedd#(n) * grow_distance#
  43.       grow_at(seedx#(n), seedy#(n), seedz#(n), seedl#(n))
  44.  
  45.       ` Breed new child
  46.       IF seedb#(n) <= 0
  47.          ` Angle AND depth TO spread
  48.          angle# = 15 + RND(15)
  49.          IF RND(1) = 1 THEN angle# = -angle#
  50.          depth# = ( -10 + RND(20) ) / 10.0
  51.  
  52.          seedx#(seednum) = seedx#(n)
  53.          seedy#(seednum) = seedy#(n)
  54.          seedz#(seednum) = seedz#(n)
  55.          seeda#(seednum) = seeda#(n) - angle#
  56.          seeda#(n) = seeda#(n) + angle#
  57.          seedd#(seednum) = depth#
  58.          seedd#(n) = depth#
  59.          seedb#(seednum) = 8 + RND(8)
  60.          seedl#(seednum) = seedl#(n) + RND(10)
  61.  
  62.          ` We have a new seed!
  63.          seednum = seednum + 1
  64.  
  65.          ` RESET breed
  66.          seedb#(n) = 8 + RND(8)
  67.       ELSE
  68.          seedb#(n) = seedb#(n) - 1
  69.       endif
  70.    endif
  71. NEXT
  72.  
  73. FOR n = 1 TO obj-1
  74.    ` Rotate animation
  75.    rotate object n, SIN(ticks)*360,SIN(0-ticks)*360,COS(ticks)*360
  76. NEXT n
  77.  
  78. SLEEP 60
  79.  
  80. set cursor 0, 0
  81. PRINT "Childs: ", seednum
  82. PRINT "Objects: ", obj
  83. sync
  84.  
  85. position camera 1,SIN(ticks)*20,-60+COS(ticks)*20,-50
  86. POINT camera 1,0,-40,0
  87.  
  88. ticks = ticks + 1
  89.  
  90. LOOP
  91.  
  92. FUNCTION grow_at( x#, y#, z#, life# )
  93.    siz# = 2.0 - obj / 1800.0
  94.    IF siz# > 0
  95.       make object cube obj, siz#
  96.       position object obj, x#, y#, 80 + z#
  97.       REM IF obj > 255 THEN delete object obj-254
  98.       cx=cx+1:IF cx=360 THEN  cx=0
  99.       color object obj, rgb(SIN(cx)*255,SIN(0-cx)*100,COS(cx)*255)
  100.       obj = obj + 1
  101.    endif
  102. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement