Browse Source

Sounds and tank fire rate

master
Ben Kurtovic 12 years ago
parent
commit
7205c7b7aa
2 changed files with 81 additions and 11 deletions
  1. +50
    -5
      lobo.nlogo
  2. +31
    -6
      tank.nls

+ 50
- 5
lobo.nlogo View File

@@ -14,6 +14,11 @@ __includes [
"tank.nls"
]

extensions [
sound
table
]

globals [
last-tick-time
max-fps
@@ -22,6 +27,7 @@ globals [
player-accelerate-for
player-deaths
player-kills
sounds
]

;; ===========================
@@ -36,7 +42,8 @@ to setup
set pcolor (random 3) - 5 + green
]
spawn-player
spawn-tank 1
spawn-tank 0 ask tank 1 [ setxy -10 0 ]
spawn-tank 1 ask tank 2 [ setxy 10 0 ]
render
set last-tick-time timer
end
@@ -61,6 +68,8 @@ end
;; ================

to debug [action msg]
; Comment this and remove the output box
; to turn off debugging info:
output-print (word (round timer) ": " action ": " msg)
end

@@ -72,6 +81,20 @@ to setup-defaults
set player-accelerate-for 0
set player-deaths 0
set player-kills 0
make-sounds-table
end

to make-sounds-table
set sounds table:make
table:put sounds "fire player" "Hand Clap"
table:put sounds "fire ally" "Hand Clap"
table:put sounds "fire enemy" "Hand Clap"
table:put sounds "shot player" "Acoustic Snare"
table:put sounds "shot ally" "Acoustic Snare"
table:put sounds "shot enemy" "Acoustic Snare"
table:put sounds "kill player" "Electric Snare"
table:put sounds "kill ally" "Electric Snare"
table:put sounds "kill enemy" "Electric Snare"
end

to show-crosshair
@@ -113,6 +136,17 @@ to keep-time
tick
set last-tick-time timer
end

to play-sound [name]
if enable-sound? [
let sname (word name " " get-tank-affiliation)
let dist distancexy ([xcor] of player) ([ycor] of player)
let volume 127 - (dist * 4)
if volume > 0 [
sound:play-drum (table:get sounds sname) volume
]
]
end
@#$#@#$#@
GRAPHICS-WINDOW
452
@@ -184,10 +218,10 @@ Player Speed
12

BUTTON
148
181
269
233
109
172
230
224
FIRE!
player-fire
NIL
@@ -261,6 +295,17 @@ Player Armor
1
12

SWITCH
264
179
394
212
enable-sound?
enable-sound?
0
1
-1000

@#$#@#$#@
WHAT IS IT?
-----------


+ 31
- 6
tank.nls View File

@@ -7,9 +7,11 @@ tanks-own [
acceleration
ammunition
armor
fire-cool-down
friction
is-accelerating?
is-player?
max-fire-rate
max-speed
max-turn
speed
@@ -26,9 +28,11 @@ to set-tank-vars [tank-team player-tank?]
set acceleration 0.03
set ammunition 20
set armor 8
set fire-cool-down 0
set friction 0.0075
set is-accelerating? false
set is-player? player-tank?
set max-fire-rate 7
set max-speed 0.25
set max-turn 24
set speed 0
@@ -46,6 +50,9 @@ to do-tank-logic
]
fd speed
decelerate friction
if fire-cool-down > 0 [
set fire-cool-down fire-cool-down - 1
]
end

to accelerate [amount]
@@ -63,8 +70,11 @@ to decelerate [amount]
end

to fire
if ammunition > 0 [
if ammunition > 0 and fire-cool-down = 0 [
debug "FIRE" (word who " (" ammunition " left)")
set ammunition ammunition - 1
set fire-cool-down max-fire-rate

hatch-bullets 1 [
set max-travel-distance 8
set shooter [who] of myself
@@ -74,20 +84,35 @@ to fire
set color white
set shape "bullet"
set size 0.5

lt random 10 ; Bullets shouldn't travel perfectly straight
rt random 10
]
play-sound "fire"
]
end

to shot-at [bullet]
debug "SHOT" (word ([shooter] of myself) " -> " who)
debug "SHOT" (word who " by " ([shooter] of myself))
set armor armor - 1
if armor = 0 [
ifelse armor = 0 [
debug "KILL" (word who " by " ([shooter] of myself))
play-sound "kill"
die
] [
play-sound "shot"
]
end

to-report get-tank-affiliation
if is-player? [ report "player" ]
if team = 0 [ report "ally" ]
report "enemy"
end

to-report get-tank-color
if is-player? [ report black ]
if team = 0 [ report green ]
report red
let affiliation get-tank-affiliation
if affiliation = "player" [ report black ]
if affiliation = "ally" [ report green ]
if affiliation = "enemy" [ report red ]
end

Loading…
Cancel
Save