Logo Bolo: a re-envisioning of the classic tank game by Stuart Cheshire in NetLogo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
1.9 KiB

  1. ;; lobo: Logo Bolo
  2. ;; (c) Ben Kurtovic, 2011-2012
  3. globals [
  4. player
  5. player-death-time
  6. player-deaths
  7. player-has-target?
  8. player-kills
  9. player-target-xcor
  10. player-target-ycor
  11. ]
  12. ;; ==========
  13. ;; Procedures
  14. ;; ==========
  15. to spawn-player [tank-xcor tank-ycor tank-heading]
  16. create-tanks 1 [
  17. set player tank who
  18. set-tank-vars true 0 tank-xcor tank-ycor tank-heading
  19. ]
  20. end
  21. to do-player-logic
  22. ifelse player = nobody [
  23. if timer - player-death-time > 1.5 [
  24. spawn-player 0 0 0
  25. ask player [
  26. play-sound "spawn"
  27. ]
  28. ]
  29. ] [
  30. ask player [
  31. do-player-movement
  32. ]
  33. ]
  34. end
  35. to do-player-movement
  36. if mouse-inside? [
  37. if mouse-down? and not mouse-was-down? [
  38. let txcor round mouse-xcor
  39. let tycor round mouse-ycor
  40. ifelse player-has-target? and player-target-xcor = txcor and player-target-ycor = tycor [
  41. cancel-target
  42. ] [
  43. set is-accelerating? true
  44. set player-has-target? true
  45. set player-target-xcor txcor
  46. set player-target-ycor tycor
  47. ]
  48. ]
  49. set mouse-was-down? mouse-down?
  50. ]
  51. ifelse player-has-target? [
  52. tank-facexy player-target-xcor player-target-ycor
  53. let dist distancexy player-target-xcor player-target-ycor
  54. if dist < 2 and speed > 0.075 [
  55. ; Turn on "brakes" if we're getting
  56. ; close and we're moving fast:
  57. decelerate friction * 5
  58. ]
  59. if dist < 0.1 [
  60. cancel-target
  61. ]
  62. ] [
  63. tank-facexy mouse-xcor mouse-ycor
  64. ]
  65. end
  66. to player-fire
  67. if player != nobody [
  68. ask player [
  69. fire
  70. ]
  71. ]
  72. end
  73. to player-place-pill
  74. if player != nobody [
  75. ask player [
  76. place-pill
  77. ]
  78. ]
  79. end
  80. to player-cancel-order
  81. if player != nobody [
  82. ask player [
  83. if player-has-target? [
  84. cancel-target
  85. ]
  86. ]
  87. ]
  88. end
  89. to cancel-target
  90. set is-accelerating? false
  91. set player-has-target? false
  92. set speed speed / 2
  93. end