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

70 строки
1.7 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 8 2]
  24. ["explosion-decay" 0.65 7 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 [
  31. create-explosion ?
  32. ]
  33. end
  34. to create-explosion [info]
  35. let sprite (item 0 info)
  36. let maxsize (item 1 info)
  37. let lifespan (item 2 info)
  38. let deviation (item 3 info)
  39. hatch-explosions 1 [
  40. set label ""
  41. set shape sprite
  42. set size maxsize / 2
  43. set midlife lifespan / 2
  44. set size-increment (maxsize / lifespan) * 2
  45. set time-to-live lifespan
  46. set heading random 360
  47. fd (random 100) / (100 / deviation)
  48. ]
  49. end
  50. to keep-exploding
  51. if time-to-live = 0 [
  52. die
  53. ]
  54. set time-to-live time-to-live - 1
  55. set midlife midlife - 1
  56. ifelse midlife > 0 [
  57. set size size + size-increment
  58. ] [
  59. set size size - size-increment
  60. ]
  61. end