Logo Bolo: a re-envisioning of the classic tank game by Stuart Cheshire in NetLogo
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

104 rader
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