| @@ -4,68 +4,120 @@ | |||
| ;; Logo Bolo is a rewrite of the classic tank game by Stuart Cheshire in NetLogo. | |||
| ;; | |||
| ;; ============ | |||
| ;; Declarations | |||
| ;; ============ | |||
| globals [ | |||
| last-tick-time | |||
| max-fps | |||
| max-tank-speed | |||
| player | |||
| player-turn-speed | |||
| ] | |||
| breed [bullets bullet] | |||
| breed [tanks tank] | |||
| tanks-own [ | |||
| speed | |||
| ] | |||
| ;; =========================== | |||
| ;; Button-initiated procedures | |||
| ;; =========================== | |||
| to setup | |||
| ca | |||
| set max-fps 30 | |||
| set max-tank-speed 20 | |||
| set player-turn-speed 10 | |||
| create-tanks 1 [ | |||
| set player who | |||
| ask patches [ | |||
| set pcolor random 3 | |||
| ] | |||
| create-ordered-tanks 1 [ | |||
| set player (tank who) | |||
| set color gray | |||
| set size 2 | |||
| set speed 0 | |||
| ] | |||
| set last-tick-time timer | |||
| end | |||
| to go | |||
| do-physics | |||
| keep-time | |||
| end | |||
| to go-forward | |||
| ask tank player [ | |||
| to player-go-forward | |||
| ask player [ | |||
| if speed < max-tank-speed [ | |||
| set speed speed + 1 | |||
| ] | |||
| ] | |||
| end | |||
| to slow-down | |||
| ask tank player [ | |||
| to player-slow-down | |||
| ask player [ | |||
| if speed > 0 [ | |||
| set speed speed - 1 | |||
| ] | |||
| ] | |||
| end | |||
| to turn-left | |||
| ask tank player [ | |||
| to player-turn-left | |||
| ask player [ | |||
| lt player-turn-speed | |||
| ] | |||
| end | |||
| to turn-right | |||
| ask tank player [ | |||
| to player-turn-right | |||
| ask player [ | |||
| rt player-turn-speed | |||
| ] | |||
| end | |||
| to player-fire | |||
| ask player [ | |||
| fire | |||
| ] | |||
| end | |||
| ;; ================ | |||
| ;; Other procedures | |||
| ;; ================ | |||
| to fire | |||
| hatch-bullets 1 [ | |||
| set color white | |||
| ] | |||
| end | |||
| to do-physics | |||
| ask tanks [ | |||
| fd speed / 40 | |||
| ] | |||
| ask bullets [ | |||
| fd 1 | |||
| ] | |||
| 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 | |||
| @#$#@#$#@ | |||
| GRAPHICS-WINDOW | |||
| 475 | |||
| 10 | |||
| 912 | |||
| 468 | |||
| 980 | |||
| 536 | |||
| 16 | |||
| 16 | |||
| 12.94 | |||
| 15.0 | |||
| 1 | |||
| 10 | |||
| 1 | |||
| @@ -85,10 +137,10 @@ GRAPHICS-WINDOW | |||
| ticks | |||
| BUTTON | |||
| 85 | |||
| 91 | |||
| 159 | |||
| 124 | |||
| 66 | |||
| 100 | |||
| 140 | |||
| 133 | |||
| Setup | |||
| setup | |||
| NIL | |||
| @@ -101,10 +153,10 @@ NIL | |||
| NIL | |||
| BUTTON | |||
| 89 | |||
| 151 | |||
| 152 | |||
| 184 | |||
| 331 | |||
| 99 | |||
| 394 | |||
| 132 | |||
| Go | |||
| go | |||
| T | |||
| @@ -117,12 +169,12 @@ NIL | |||
| NIL | |||
| BUTTON | |||
| 270 | |||
| 216 | |||
| 359 | |||
| 249 | |||
| 193 | |||
| 174 | |||
| 282 | |||
| 207 | |||
| Forward | |||
| go-forward | |||
| player-go-forward | |||
| NIL | |||
| 1 | |||
| T | |||
| @@ -133,12 +185,12 @@ NIL | |||
| NIL | |||
| BUTTON | |||
| 220 | |||
| 278 | |||
| 283 | |||
| 311 | |||
| 143 | |||
| 236 | |||
| 206 | |||
| 269 | |||
| Left | |||
| turn-left | |||
| player-turn-left | |||
| NIL | |||
| 1 | |||
| T | |||
| @@ -149,12 +201,12 @@ NIL | |||
| NIL | |||
| BUTTON | |||
| 327 | |||
| 277 | |||
| 396 | |||
| 310 | |||
| 250 | |||
| 235 | |||
| 319 | |||
| 268 | |||
| Right | |||
| turn-right | |||
| player-turn-right | |||
| NIL | |||
| 1 | |||
| T | |||
| @@ -165,12 +217,12 @@ NIL | |||
| NIL | |||
| BUTTON | |||
| 256 | |||
| 337 | |||
| 364 | |||
| 370 | |||
| 179 | |||
| 295 | |||
| 287 | |||
| 328 | |||
| Slow Down | |||
| slow-down | |||
| player-slow-down | |||
| NIL | |||
| 1 | |||
| T | |||
| @@ -181,16 +233,32 @@ NIL | |||
| NIL | |||
| MONITOR | |||
| 52 | |||
| 303 | |||
| 152 | |||
| 348 | |||
| 314 | |||
| 441 | |||
| 414 | |||
| 486 | |||
| Player Speed | |||
| [speed] of tank player | |||
| [speed] of player | |||
| 17 | |||
| 1 | |||
| 11 | |||
| BUTTON | |||
| 199 | |||
| 361 | |||
| 262 | |||
| 394 | |||
| FIRE! | |||
| player-fire | |||
| NIL | |||
| 1 | |||
| T | |||
| OBSERVER | |||
| NIL | |||
| NIL | |||
| NIL | |||
| NIL | |||
| @#$#@#$#@ | |||
| WHAT IS IT? | |||
| ----------- | |||