Logo Bolo: a re-envisioning of the classic tank game by Stuart Cheshire in NetLogo
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

101 lignes
1.8 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. ]
  26. ] [
  27. ask player [
  28. do-player-movement
  29. ]
  30. ]
  31. end
  32. to do-player-movement
  33. if mouse-inside? [
  34. if mouse-down? and not mouse-was-down? [
  35. let txcor round mouse-xcor
  36. let tycor round mouse-ycor
  37. ifelse player-has-target? and player-target-xcor = txcor and player-target-ycor = tycor [
  38. cancel-target
  39. ] [
  40. set is-accelerating? true
  41. set player-has-target? true
  42. set player-target-xcor txcor
  43. set player-target-ycor tycor
  44. ]
  45. ]
  46. set mouse-was-down? mouse-down?
  47. ]
  48. ifelse player-has-target? [
  49. tank-facexy player-target-xcor player-target-ycor
  50. let dist distancexy player-target-xcor player-target-ycor
  51. if dist < 2 and speed > 0.075 [
  52. ; Turn on "brakes" if we're getting
  53. ; close and we're moving fast:
  54. decelerate friction * 5
  55. ]
  56. if dist < 0.1 [
  57. cancel-target
  58. ]
  59. ] [
  60. tank-facexy mouse-xcor mouse-ycor
  61. ]
  62. end
  63. to player-fire
  64. if player != nobody [
  65. ask player [
  66. fire
  67. ]
  68. ]
  69. end
  70. to player-place-pill
  71. if player != nobody [
  72. ask player [
  73. place-pill
  74. ]
  75. ]
  76. end
  77. to player-cancel-order
  78. if player != nobody [
  79. ask player [
  80. if player-has-target? [
  81. cancel-target
  82. ]
  83. ]
  84. ]
  85. end
  86. to cancel-target
  87. set is-accelerating? false
  88. set player-has-target? false
  89. set speed speed / 2
  90. end