|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 |
- ;; lobo: Logo Bolo
- ;; (c) Ben Kurtovic, 2011
- ;;
- ;; Logo Bolo is a re-envisioning of the classic tank game by Stuart Cheshire in NetLogo.
- ;;
-
- __includes [
- "bullet.nls"
- "explosion.nls"
- "player.nls"
- "tank.nls"
- ]
-
- extensions [
- sound
- table
- ]
-
- globals [
- last-tick-time
- max-fps
- mouse-was-down?
- sounds
- ]
-
- ;; ===========================
- ;; Button-initiated procedures
- ;; ===========================
-
- to setup
- clear-all
- no-display
- setup-defaults
- make-sounds-table
- make-explosions-table
- load-map
- spawn-player
- spawn-tank 0 ask tank 1 [ setxy -6 0 ]
- spawn-tank 1 ask tank 2 [ setxy 6 0 ]
- render
- set last-tick-time timer
- end
-
- to go
- ask player [
- do-player-logic
- ]
- ask tanks [
- do-tank-logic
- ]
- ask bullets [
- do-bullet-logic
- ]
- ask explosions [
- keep-exploding
- ]
- show-crosshair
- render
- keep-time
- end
-
- to player-fire
- ask player [
- fire
- ]
- end
-
- to player-cancel-order
- ask player [
- cancel-order
- ]
- end
-
- ;; ================
- ;; Other procedures
- ;; ================
-
- to debug [action msg]
- ; Comment this and remove the output box
- ; to turn off debugging info:
- output-print (word (round timer) ": " action ": " msg)
- end
-
- to setup-defaults
- set-patch-size 30
- resize-world -8 8 -8 8
- set max-fps 30
- set mouse-was-down? false
- set player-deaths 0
- set player-has-target? false
- set player-kills 0
- set player-target-xcor 0
- set player-target-ycor 0
- end
-
- to make-sounds-table
- set sounds table:make
- table:put sounds "fire" "Hand Clap"
- table:put sounds "noammo" "Cowbell"
- table:put sounds "shot" "Acoustic Snare"
- table:put sounds "kill" "Electric Snare"
- end
-
- to load-map
- ask patches [
- set pcolor (random 3) - 5 + green
- ]
- end
-
- to show-crosshair
- clear-drawing
- if mouse-inside? [
- ask patch mouse-xcor mouse-ycor [
- draw-border white 1
- ]
- ]
- if player-has-target? [
- ask patch player-target-xcor player-target-ycor [
- draw-border white 2
- ]
- ]
- end
-
- to draw-border [b-color b-thickness]
- sprout 1 [
- set color b-color
- set pen-size b-thickness
- set heading 0
- fd 0.5
- pd
- rt 90
- fd 0.5
- repeat 3 [
- rt 90
- fd 1
- ]
- rt 90
- fd 0.5
- die
- ]
- end
-
- to render
- display
- no-display
- end
-
- to keep-time
- let time-since-last-tick timer - last-tick-time
- let wait-time (1 / max-fps) - time-since-last-tick
- wait wait-time
- tick
- set last-tick-time timer
- end
-
- to play-sound [name]
- if enable-sound? [
- let dist distancexy ([xcor] of player) ([ycor] of player)
- let volume 127 - (dist * 4)
- if volume > 0 [
- sound:play-drum (table:get sounds name) volume
- ]
- ]
- end
- @#$#@#$#@
- GRAPHICS-WINDOW
- 452
- 10
- 972
- 551
- 8
- 8
- 30.0
- 1
- 10
- 1
- 1
- 1
- 0
- 1
- 1
- 1
- -8
- 8
- -8
- 8
- 0
- 0
- 1
- frames
-
- BUTTON
- 43
- 100
- 138
- 133
- New Game
- setup
- NIL
- 1
- T
- OBSERVER
- NIL
- R
- NIL
- NIL
-
- BUTTON
- 290
- 99
- 384
- 132
- Play Game
- go
- T
- 1
- T
- OBSERVER
- NIL
- G
- NIL
- NIL
-
- MONITOR
- 269
- 290
- 389
- 339
- Player Speed
- [speed] of player
- 8
- 1
- 12
-
- BUTTON
- 109
- 172
- 230
- 224
- FIRE!
- player-fire
- NIL
- 1
- T
- OBSERVER
- NIL
- F
- NIL
- NIL
-
- MONITOR
- 270
- 350
- 389
- 399
- Player Has Target?
- player-has-target?
- 5
- 1
- 12
-
- OUTPUT
- 998
- 30
- 1375
- 521
- 12
-
- MONITOR
- 55
- 290
- 149
- 339
- Player Deaths
- player-deaths
- 17
- 1
- 12
-
- MONITOR
- 55
- 350
- 148
- 399
- Player Kills
- player-kills
- 17
- 1
- 12
-
- MONITOR
- 160
- 290
- 261
- 339
- Player Ammo
- [ammunition] of player
- 17
- 1
- 12
-
- MONITOR
- 160
- 350
- 260
- 399
- Player Armor
- [armor] of player
- 17
- 1
- 12
-
- SWITCH
- 264
- 179
- 394
- 212
- enable-sound?
- enable-sound?
- 0
- 1
- -1000
-
- MONITOR
- 272
- 411
- 390
- 460
- Player Target
- word \"(\" player-target-xcor \", \" player-target-ycor \")\"
- 10
- 1
- 12
-
- BUTTON
- 109
- 235
- 230
- 268
- Cancel Order
- player-cancel-order
- NIL
- 1
- T
- OBSERVER
- NIL
- C
- NIL
- NIL
-
- @#$#@#$#@
- WHAT IS IT?
- -----------
- This section could give a general understanding of what the model is trying to show or explain.
-
-
- HOW IT WORKS
- ------------
- This section could explain what rules the agents use to create the overall behavior of the model.
-
-
- HOW TO USE IT
- -------------
- This section could explain how to use the model, including a description of each of the items in the interface tab.
-
-
- THINGS TO NOTICE
- ----------------
- This section could give some ideas of things for the user to notice while running the model.
-
-
- THINGS TO TRY
- -------------
- This section could give some ideas of things for the user to try to do (move sliders, switches, etc.) with the model.
-
-
- EXTENDING THE MODEL
- -------------------
- This section could give some ideas of things to add or change in the procedures tab to make the model more complicated, detailed, accurate, etc.
-
-
- NETLOGO FEATURES
- ----------------
- This section could point out any especially interesting or unusual features of NetLogo that the model makes use of, particularly in the Procedures tab. It might also point out places where workarounds were needed because of missing features.
-
-
- RELATED MODELS
- --------------
- This section could give the names of models in the NetLogo Models Library or elsewhere which are of related interest.
-
-
- CREDITS AND REFERENCES
- ----------------------
- This section could contain a reference to the model's URL on the web if it has one, as well as any other necessary credits or references.
- @#$#@#$#@
- default
- true
- 0
- Polygon -7500403 true true 150 5 40 250 150 205 260 250
-
- bullet
- true
- 5
- Rectangle -16777216 true false 135 30 165 90
- Rectangle -1 true false 135 90 165 150
- Rectangle -1 true false 135 150 165 210
- Polygon -16777216 true false 135 30 150 0 165 30 135 30
- Rectangle -2674135 true false 135 210 165 270
- Rectangle -16777216 true false 120 270 180 300
- Polygon -7500403 true false 195 210 165 150 165 210 195 210
- Rectangle -7500403 true false 165 210 195 268
- Rectangle -7500403 true false 105 210 135 268
- Polygon -7500403 true false 105 210 135 150 135 210 105 210
-
- explosion-decay
- false
- 0
- Circle -2674135 true false 2 2 295
- Circle -955883 true false 75 75 148
-
- explosion-kill
- false
- 0
- Circle -6459832 true false 2 2 297
- Circle -2674135 true false 30 30 240
- Circle -955883 true false 60 60 180
- Circle -1184463 true false 90 90 120
-
- explosion-shot
- false
- 0
- Circle -2674135 true false 0 0 300
- Circle -955883 true false 45 45 210
- Circle -1184463 true false 90 90 120
-
- tank
- true
- 1
- Rectangle -7500403 true false 78 85 116 103
- Polygon -7500403 true false 105 270 210 271 210 105 180 105 180 135 120 135 120 105 90 105 89 270
- Polygon -2674135 true true 120 105 90 105 90 180 120 180 120 195 180 195 180 180 210 180 210 105 180 105 165 105 165 135 135 135 135 105 120 105
- Polygon -1 true false 135 15 135 150 165 150 165 15
- Polygon -1 true false 67 105 67 255 97 255 97 105
- Polygon -1 true false 202 105 202 255 232 255 232 105
- Rectangle -7500403 true false 184 85 222 103
-
- @#$#@#$#@
- NetLogo 4.1.3
- @#$#@#$#@
- @#$#@#$#@
- @#$#@#$#@
- @#$#@#$#@
- @#$#@#$#@
- default
- 0.0
- -0.2 0 1.0 0.0
- 0.0 1 1.0 0.0
- 0.2 0 1.0 0.0
- link direction
- true
- 0
- Line -7500403 true 150 150 90 180
- Line -7500403 true 150 150 210 180
-
- @#$#@#$#@
- 0
- @#$#@#$#@
|