Logo Bolo: a re-envisioning of the classic tank game by Stuart Cheshire in NetLogo
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

67 строки
1.6 KiB

  1. ;; lobo: Logo Bolo
  2. ;; (c) Ben Kurtovic, 2011
  3. globals [
  4. explodes
  5. ]
  6. breed [explosions explosion]
  7. explosions-own [
  8. midlife
  9. size-increment
  10. time-to-live
  11. ]
  12. ;; ==========
  13. ;; Procedures
  14. ;; ==========
  15. to make-explosions-table
  16. ; Fun with particle effects!
  17. set explodes table:make
  18. table:put explodes "decay" [["explosion-decay" 0.65 10 0.5]]
  19. table:put explodes "shot" [["explosion-shot" 1.25 10 0.5]]
  20. table:put explodes "kill" [["explosion-kill" 3 20 0.5] ["explosion-shot" 1.25 15 1]
  21. ["explosion-shot" 1.25 15 1 ] ["explosion-shot" 1.25 10 1]
  22. ["explosion-shot" 1.25 10 1 ] ["explosion-decay" 0.65 10 2]
  23. ["explosion-decay" 0.65 10 2 ] ["explosion-decay" 0.65 7.5 2]
  24. ["explosion-decay" 0.65 7.5 2 ] ["explosion-decay" 0.65 5 3]
  25. ["explosion-decay" 0.65 5 3 ]]
  26. end
  27. to explode [name]
  28. debug "EXPLODE" name
  29. let data table:get explodes name
  30. foreach data [create-explosion ?]
  31. end
  32. to create-explosion [info]
  33. let sprite (item 0 info)
  34. let maxsize (item 1 info)
  35. let lifespan (item 2 info)
  36. let deviation (item 3 info)
  37. hatch-explosions 1 [
  38. set shape sprite
  39. set size maxsize / 2
  40. set midlife lifespan / 2
  41. set size-increment (maxsize / lifespan) * 2
  42. set time-to-live lifespan
  43. set heading random 360
  44. fd (random 100) / (100 / deviation)
  45. ]
  46. end
  47. to keep-exploding
  48. if time-to-live = 0 [
  49. die
  50. ]
  51. set time-to-live time-to-live - 1
  52. set midlife midlife - 1
  53. ifelse midlife > 0 [
  54. set size size + size-increment
  55. ] [
  56. set size size - size-increment
  57. ]
  58. end