# Let's make a game of Freeze Tag!
# game.tagged is used to count tagged archers.
game.tagged = 0
ui.track(game, "tagged")
goal = game.addManualGoal("Tag all archers.")
# Spawn the archers.
game.spawnXY("archer", 12, 52)
game.spawnXY("archer", 12, 16)
game.spawnXY("archer", 24, 52)
game.spawnXY("archer", 24, 16)
player = game.spawnPlayerXY('captain', 68, 24)
player.maxSpeed = 20
# Make the player bigger so it's easier to tag archers.
player.scale = 2
# Set up the archers' speed and behavior properties onSpawn
def onSpawn(event):
unit = event.target
unit.behavior = "Scampers"
unit.maxSpeed = 8
game.setActionFor("archer", "spawn", onSpawn)
# The event handler for "collide" events.
def onCollide(event):
# The event owner who has collided with something.
unit = event.target
# The object the unit collided with.
other = event.other
# Use behavior as a marker for the current frozen state.
# "Scampers" means the archer wasn't yet tagged.
if unit.behavior == "Scampers":
# If "other" is the player.
if other == hero:
# Set unit.behavior to "Defends":
unit.behavior = "Defends"
game.tagged +=1
pass
if unit.behavior == "Defends":
# If other's type is "archer":
if other.type == "archer":
# Set unit.behavior to "Scampers":
unit.behavior = "Scampers"
# Reduce game.tagged by 1.
game.tagged -= 1
# Use setActionFor to assign onCollide to the "collide" event for "archer"s.
other.on("collide", onCollide)
while True:
if game.tagged >= 4:
game.setGoalState(goal, True)
I dont know what im doing wrong. If you spot something I dont please let me know.
I use JavaScript, not Python, so I might be wrong here; but I would suggest changing your other.on(“collide”, onCollide) to --> game.setActionFor(“archer”, “collide”, onCollide)
Also, where have you defined ‘hero’?:
if unit.behavior == "Scampers":
# If "other" is the player.
if other == hero:
# Set unit.behavior to "Defends":
unit.behavior = "Defends"
game.tagged +=1
Let’s make a game of Freeze Tag!
game.tagged is used to count tagged archers.
game.tagged = 0
ui.track(game, “tagged”)
goal = game.addManualGoal(“Tag all archers.”)
Spawn the archers.
game.spawnXY(“archer”, 12, 52)
game.spawnXY(“archer”, 12, 16)
game.spawnXY(“archer”, 24, 52)
game.spawnXY(“archer”, 24, 16)
player = game.spawnPlayerXY(‘captain’, 68, 24)
player.maxSpeed = 20
Make the player bigger so it’s easier to tag archers.
player.scale = 2
Set up the archers’ speed and behavior properties onSpawn
def onSpawn(event):
unit = event.target
unit.behavior = “Scampers”
unit.maxSpeed = 8
game.setActionFor(“archer”, “spawn”, onSpawn)
The event handler for “collide” events.
def onCollide(event):
# The event owner who has collided with something.
unit = event.target
# The object the unit collided with.
other = event.other
# Use behavior as a marker for the current frozen state.
# “Scampers” means the archer wasn’t yet tagged.
if unit.behavior == “Scampers”:
# If “other” is the player.
if other == player:
# Set unit.behavior to “Defends”:
unit.behavior = “Defends”
game.tagged +=1
pass
if unit.behavior == "Defends":
# If other's type is "archer":
if other.type == "archer":
# Set unit.behavior to "Scampers":
unit.behavior = "Scampers"
# Reduce game.tagged by 1.
game.tagged -= 1
Use setActionFor to assign archer to the “collide” event for "archer"s.
game.setActionFor(“archer”, “collide”, onCollide)
while True:
if game.tagged >= 4:
game.setGoalState(goal, True)
Hi, please format your code correctly using the “preformatted text” button or by using 3 backticks (`) before and after your code
1 Like