Skip to content

Instantly share code, notes, and snippets.

@joshuaChoiXD
Created November 18, 2020 09:51
Show Gist options
  • Save joshuaChoiXD/3b73821d6dec275a2e4561eb34723523 to your computer and use it in GitHub Desktop.
Save joshuaChoiXD/3b73821d6dec275a2e4561eb34723523 to your computer and use it in GitHub Desktop.
CodeCombat Game Development 2 (Q.21 - 29) Answers
#CodeCombat Game Development 2
#Q.21 - 29 Answers
#Welcome to tell me any opinion of my codes.
#Check out my other Q.1 - 20 Answers
#Level 21
# Mushrooms allow the player to destroy fences for a time.
player = game.spawnPlayerXY('captain', 22, 45)
player.maxSpeed = 30
player.maxHealth = 10000
game.addMoveGoalXY(23, 55)
ui.track(game, "time")
# The duration of the mushroom power.
game.powerDuration = 5
# The time the mushroom power expires at.
game.powerEndTime = 0
# "mushroom"s are collectable items without default effects.
game.spawnXY("mushroom", 22, 45)
game.spawnXY("mushroom", 12, 52)
game.spawnXY("mushroom", 12, 16)
game.spawnXY("mushroom", 36, 16)
game.spawnXY("mushroom", 36, 52)
game.spawnXY("mushroom", 56, 12)
game.spawnXY("mushroom", 56, 56)
game.spawnXY("mushroom", 56, 34)
# The event handler for "collect" events.
def onCollect(event):
unit = event.target
item = event.other
if item.type == "mushroom":
# "scale" changes the visual size of the unit.
unit.scale = 2
game.powerEndTime = game.time + game.powerDuration
unit.say("ARRRGH!!!")
# 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.
collidedObject = event.other
# If it's a fence.
if collidedObject.type == "fence":
if unit.scale == 2:
# Use the `destroy` method of collidedObject.
collidedObject.destroy()
pass
# Assign onCollide to the "collide" event on the player.
player.on("collide", onCollide)
# Assign onCollect to the "collect" event on the player.
player.on("collect", onCollect)
def checkTimers():
# If game time is greater than game.powerEndTime:
if game.time > game.powerEndTime:
# If player.scale is equal to 2:
if player.scale == 2:
# Set the player's scale to 1.
player.scale = 1
pass
while True:
checkTimers()
#Level 22
# 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 = 30
player.maxHealth = 10000000000
# Make the player bigger so it's easier to tag archers.
player.scale = 10
# 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.type == "captain":
# Set unit.behavior to "Defends":
unit.behavior = "Defends"
# Increase game.tagged by 1:
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.
game.setActionFor("archer", "collide", onCollide)
while True:
if game.tagged >= 4:
game.setGoalState(goal, True)
#Level 23
# Generate randomly placed treasures and destroy them later.
# This spawns an item with lifetime at a random point.
def spawnValuable(itemType, lifetime):
x = game.randomInteger(12, 68)
y = game.randomInteger(12, 56)
item = game.spawnXY(itemType, x, y)
item.destroyTime = game.time + lifetime
# This spawns the treasure set.
def spawnTreasures():
spawnValuable("bronze-coin", 6)
spawnValuable("silver-coin", 5)
spawnValuable("gold-coin", 4)
spawnValuable("gold-coin")
spawnValuable("gold-coin", 4)
spawnValuable("gem", 2)
spawnValuable("bronze-coin", 6)
spawnValuable("silver-coin", 5)
spawnValuable("gold-coin", 4)
spawnValuable("gold-coin")
spawnValuable("gold-coin", 4)
spawnValuable("gem", 2)
# The event handler for items.
def onSpawn(event):
item = event.target
while True:
# If the game time is greater than item destroyTime:
if game.time >= item.destroyTime:
# Destroy the item:
item.destroy()
pass
game.setActionFor("bronze-coin", "spawn", onSpawn)
game.setActionFor("silver-coin", "spawn", onSpawn)
game.setActionFor("gold-coin", "spawn", onSpawn)
game.setActionFor("gem", "spawn", onSpawn)
# Game settings, goals and UI.
game.spawnTime = 0
game.spawnInterval = 3
game.score = 0
if not db.get("topScore"):
db.set("topScore", 0)
ui.track(game, "time")
ui.track(game, "score")
ui.track(db, "topScore")
goal = game.addManualGoal("Collect at least 50 gold for 30 seconds.")
# The hero setup.
hero = game.spawnHeroXY("captain", 40, 34)
hero.maxSpeed = 50
def onCollect(event):
item = event.other
# If the item has 'value' property:
if item.value:
# Increase the game score by item's value:
game.score += item.value
hero.on("collect", onCollect)
# This checks timers for treasure spawning.
def checkSpawns():
# If game time is greater than game spawnTime:
if game.time > game.spawnTime:
# Use spawnTreasures to create more items.
spawnTreasures()
# Increase game.spawnTime by game.spawnInterval:
game.spawnTime += game.spawnInterval
pass
# This checks the goal state.
def checkGoal():
if game.score > 50:
goal.success = True
else:
goal.success = False
# This checks the game state.
def checkGameOver():
if game.time > 30:
checkGoal()
db.set("topScore", game.score)
while True:
checkSpawns()
checkGameOver()
#Level 24
# Destroy at least 50 defeated ogres.
# This spawns and configures an archer.
def spawnArcher(x, y):
archer = game.spawnXY("archer", x, y)
archer.behavior = "Defends"
archer.attackDamage = 20
# This spawns and configures an ogre.
def spawnMunchkin(x, y):
ogre = game.spawnXY("munchkin", x, y)
ogre.behavior = "AttacksNearest"
# Spawns some archers in a row.
def spawnArcherWall():
spawnArcher(30, 12)
spawnArcher(30, 23)
spawnArcher(30, 34)
spawnArcher(30, 45)
spawnArcher(30, 56)
# Spawns an ogre wave with a random offset for variety.
def spawnOgreWave():
offset = game.randomInteger(-6, 6)
spawnMunchkin(80, 16 + offset)
spawnMunchkin(80, 22 + offset)
spawnMunchkin(80, 28 + offset)
spawnMunchkin(80, 34 + offset)
spawnMunchkin(80, 40 + offset)
spawnMunchkin(80, 46 + offset)
spawnMunchkin(80, 52 + offset)
def onDefeat(event):
unit = event.target
# Increase the game.defeated counter by 1.
game.defeated += 1
# Use unit.destroy() to destroy it.
unit.destroy()
# Set "munchkin"s "defeat" event handlers to onDefeat.
game.setActionFor("munchkin", "defeat", onDefeat)
game.defeated = 0
game.spawnTime = 0
# Add a manual goal.
goal = game.addManualGoal("Defeat 77 ogres.")
ui.track(game, "defeated")
def checkSpawnTimer():
if game.time > game.spawnTime:
spawnOgreWave()
game.spawnTime += 1
def checkGoal():
# If the game.defeated counter is greater than 77:
if game.defeated > 77:
# Set the goal as successfully completed.
game.setGoalState(goal, True)
pass
spawnArcherWall()
while True:
checkSpawnTimer()
checkGoal()
#Level 25
# Let's start building a new Pac-Man style arcade game.
# We will continue working on this game in the next levels.
# First we need the forest.
# Let's spawn some "forest" tiles in a grid pattern.
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
# As you can see the distance between them is 16 meters.
# Spawn more forest tiles in the three spots
# where they are missing
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
# Next we spawn coins in between the forests.
# Leave free space for mushroom power-ups!
# Scroll down, there are many coins.
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
# Spawn more coins in the empty spaces. (8 meters apart)
game.spawnXY("bronze-coin", 40, 32)
game.spawnXY("bronze-coin", 48, 55)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
# Mushrooms will be our powerups.
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
# Spawn more mushrooms.
game.spawnXY("mushroom", 40, 56)
game.spawnXY("mushroom", 72, 32)
# The player and goal setup.
player = game.spawnPlayerXY('knight', 8, 8)
player.maxSpeed = 50
game.addCollectGoal()
# Now test what you’ve done to make sure it works!
#Level 26
# Part 2 of creating a Pac-Man style arcade game.
# The game layout and items. Scroll down.
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
game.spawnXY("bronze-coin", 48, 56)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
game.spawnXY("mushroom", 72, 32)
game.spawnXY("mushroom", 40, 56)
# The game score.
game.score = 1000
game.addCollectGoal()
# Setting UI for "score" and "time".
ui.track(game, "time")
ui.track(game, "score")
player = game.spawnPlayerXY("knight", 8, 8)
# High player speed for now, to simplify your level testing.
#lol you should do this a lot earlier
player.maxSpeed = 50
def onCollect(event):
player = event.target
item = event.other
# If the item's type is "bronze-coin":
if item.type == "bronze-coin":
# Increase the game.score by 1.
game.score += 1
pass
# If the type is "mushroom", then increase game.score by 5.
if item.type == "mushroom":
game.score += 5
# Assign the event handler on the player's "collect" event.
game.setActionFor("knight", "collect", onCollect)
# This function reduces the score over time.
def checkTimeScore():
# Each time frame we reduce the game.score:
game.score -= 0.5
# If the game.score is less than 0:
if game.score <= 0:
# Set the game.score equal to 0:
game.score = 0
# The main game loop.
while True:
checkTimeScore()
# Win the game.
#Level 27
# Step 3 of creating a Pac-Man style arcade game.
# The game layout and items. Scroll down.
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
game.spawnXY("bronze-coin", 48, 56)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
game.spawnXY("mushroom", 72, 32)
game.spawnXY("mushroom", 40, 56)
game.score = 1000
ui.track(game, "time")
ui.track(game, "score")
# Lets simplify the game while we don't have power-ups.
game.addCollectGoal(10)
game.addSurviveGoal()
player = game.spawnPlayerXY("knight", 8, 8)
player.maxSpeed = 32
player.maxHealth = 1
def onCollect(event):
player = event.target
item = event.other
if item.type == "bronze-coin":
game.score += 1
if item.type == "mushroom":
game.score += 5
player.on("collect", onCollect)
# Spawn a monster "generator" in the center:
gen = game.spawnXY("generator", 40, 33)
# Set the generator spawnType to “scout”.
gen.spawnType = "scout"
# Set the generator spawnDelay to 6 (or greater).
gen.spawnDelay = 100
# This function configures new spawned scouts.
def onSpawn(event):
unit = event.target
unit.maxSpeed = 8
# Set the unit's attackDamage to a value that
# is greater than or equal to the player's maxHealth.
unit.attackDamage = 1
# Set the handler for "scout"s' "spawn" event to onSpawn
game.setActionFor("scout", "spawn", onSpawn)
def checkTimeScore():
game.score -= 0.5
if game.score < 0:
game.score = 0
while True:
checkTimeScore()
# Win the game.
#Level 28
# The game layout and items. Scroll down.
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
game.spawnXY("bronze-coin", 48, 56)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
game.spawnXY("mushroom", 72, 32)
game.spawnXY("mushroom", 40, 56)
game.score = 1000
# The duration of power-ups.
game.powerDuration = 4
# The time until a power-up runs out. Used for UI.
game.powerTime = 0
# The time a power-up expires. Used internally.
game.powerEndTime = 0
ui.track(game, "time")
ui.track(game, "score")
# Add ui for game.powerTime:
game.addCollectGoal()
game.addSurviveGoal();
hero = game.spawnHeroXY("knight", 8, 8)
hero.maxSpeed = 50
# The function make the hero big and strong.
def powerHeroUp():
hero.scale = 2
hero.attackDamage = 100
game.powerEndTime = game.time + game.powerDuration
# The function return the hero in the normal state.
def powerHeroDown():
hero.scale = 1
hero.attackDamage = 1
def onCollect(event):
player = event.target
item = event.other
if item.type == "bronze-coin":
game.score += 1
if item.type == "mushroom":
game.score += 5
# Use powerHeroUp to strengthen the hero:
powerHeroUp()
def onCollide(event):
player = event.target
other = event.other
# If other is a "scout" and the player's scale is 2:
if other.type == 'scout' and player.scale==2:
# Defeat the other with the defeat method:
other.die()
hero.on("collect", onCollect)
# Assign the event handler for the hero's "collide" event:
hero.on("collide", onCollide)
generator = game.spawnXY("generator", 41, 31)
generator.spawnType = "scout"
generator.spawnDelay = 6;
def onSpawn(event):
unit = event.target
unit.maxSpeed = 8
unit.attackDamage = hero.maxHealth
while True:
# Enemies run away from the big hero.
if hero.scale == 2:
unit.behavior = "RunsAway"
else:
unit.behavior = "AttacksNearest"
def onDefeat(event):
# Increase game.score for defeated enemies:
game.score +=1
pass
game.setActionFor("scout", "spawn", onSpawn)
# Set the action for "scout"'s "defeat" event:
game.setActionFor("scout", "defeat", onDefeat)
def checkTimeScore():
game.score -= 0.5
if game.score < 0:
game.score = 0
def checkPowerTimer():
# Remaining power time.
game.powerTime = game.powerEndTime - game.time
if game.powerTime <= 0:
game.powerTime = 0
# If the hero's scale is 2:
if hero.scale==2:
# Use powerHeroDown to end the power-up.
powerHeroDown()
# Lets combine all the time based functions.
def checkTimers():
checkTimeScore()
checkPowerTimer()
while True:
checkTimers()
# Win the game.
#Level 29
# Step 5 of creating a Pac-Man style arcade game.
# GAME PARAMETERS
# Game parameters define the game difficulty.
# Change the game parameters to balance the game.
# How long power-ups work (seconds).
POWER_DURATION = 5 # ∆
# Score values for coins, mushrooms and ogres.
COIN_SCORE = 2 # ∆
MUSHROOM_SCORE = 10 # ∆
DEFEATED_SCORE = 2 # ∆
# How much the score is reduced each game tick.
TIME_SCORE = 2 # ∆
# The player and ogre speeds.
HERO_SPEED = 30 # ∆
OGRE_SPEED = 1 # ∆
# The ogre spawn delay (seconds).
SPAWN_DELAY = 100 # ∆
# LEVEL LAYOUT
# Obstacles and collectable items.
game.spawnXY("forest", 16, 16)
game.spawnXY("forest", 32, 16)
game.spawnXY("forest", 48, 16)
game.spawnXY("forest", 64, 16)
game.spawnXY("forest", 16, 32)
game.spawnXY("forest", 32, 32)
game.spawnXY("forest", 48, 32)
game.spawnXY("forest", 64, 32)
game.spawnXY("forest", 16, 48)
game.spawnXY("forest", 32, 48)
game.spawnXY("forest", 48, 48)
game.spawnXY("forest", 64, 48)
game.spawnXY("bronze-coin", 16, 8)
game.spawnXY("bronze-coin", 24, 8)
game.spawnXY("bronze-coin", 32, 8)
game.spawnXY("bronze-coin", 48, 8)
game.spawnXY("bronze-coin", 56, 8)
game.spawnXY("bronze-coin", 64, 8)
game.spawnXY("bronze-coin", 72, 8)
game.spawnXY("bronze-coin", 8, 16)
game.spawnXY("bronze-coin", 24, 16)
game.spawnXY("bronze-coin", 40, 16)
game.spawnXY("bronze-coin", 56, 16)
game.spawnXY("bronze-coin", 72, 16)
game.spawnXY("bronze-coin", 8, 24)
game.spawnXY("bronze-coin", 16, 24)
game.spawnXY("bronze-coin", 24, 24)
game.spawnXY("bronze-coin", 32, 24)
game.spawnXY("bronze-coin", 40, 24)
game.spawnXY("bronze-coin", 48, 24)
game.spawnXY("bronze-coin", 56, 24)
game.spawnXY("bronze-coin", 64, 24)
game.spawnXY("bronze-coin", 72, 24)
game.spawnXY("bronze-coin", 24, 32)
game.spawnXY("bronze-coin", 56, 32)
game.spawnXY("bronze-coin", 8, 40)
game.spawnXY("bronze-coin", 16, 40)
game.spawnXY("bronze-coin", 24, 40)
game.spawnXY("bronze-coin", 32, 40)
game.spawnXY("bronze-coin", 40, 40)
game.spawnXY("bronze-coin", 48, 40)
game.spawnXY("bronze-coin", 56, 40)
game.spawnXY("bronze-coin", 64, 40)
game.spawnXY("bronze-coin", 72, 40)
game.spawnXY("bronze-coin", 8, 48)
game.spawnXY("bronze-coin", 24, 48)
game.spawnXY("bronze-coin", 40, 48)
game.spawnXY("bronze-coin", 56, 48)
game.spawnXY("bronze-coin", 72, 48)
game.spawnXY("bronze-coin", 8, 56)
game.spawnXY("bronze-coin", 16, 56)
game.spawnXY("bronze-coin", 24, 56)
game.spawnXY("bronze-coin", 32, 56)
game.spawnXY("bronze-coin", 48, 56)
game.spawnXY("bronze-coin", 56, 56)
game.spawnXY("bronze-coin", 64, 56)
game.spawnXY("bronze-coin", 72, 56)
game.spawnXY("mushroom", 40, 8)
game.spawnXY("mushroom", 8, 32)
game.spawnXY("mushroom", 72, 32)
game.spawnXY("mushroom", 40, 56)
# GAME SETUP
# Goals, UI and game global variables.
game.score = 1000
game.powerDuration = POWER_DURATION
game.powerTime = 0
game.powerEndTime = 0
ui.track(game, "time")
ui.track(game, "score")
ui.track(game, "powerTime")
game.addCollectGoal()
game.addSurviveGoal();
# HERO SETUP
# The player, its parameters and event handlers.
player = game.spawnPlayerXY("knight", 8, 8)
player.maxSpeed = HERO_SPEED
def powerPlayerUp():
player.scale = 2
player.attackDamage = 100
game.powerEndTime = game.time + game.powerDuration
def powerPlayerDown():
player.scale = 1
player.attackDamage = 1
def onCollect(event):
player = event.target
item = event.other
if item.type == "bronze-coin":
game.score += COIN_SCORE
if item.type == "mushroom":
game.score += MUSHROOM_SCORE
powerPlayerUp()
def onCollide(event):
player = event.target
other = event.other
if other.type == "scout" and player.scale == 2:
other.defeat()
player.on("collect", onCollect)
player.on("collide", onCollide)
# ENEMIES
# The enemy generator, enemies` events and parameters.
generator = game.spawnXY("generator", 41, 31)
generator.spawnType = "scout"
generator.spawnDelay = SPAWN_DELAY;
def onSpawn(event):
unit = event.target
unit.maxSpeed = OGRE_SPEED
unit.attackDamage = player.maxHealth
while True:
if player.scale == 2:
unit.behavior = "RunsAway"
else:
unit.behavior = "AttacksNearest"
def onDefeat(event):
game.score += DEFEATED_SCORE
game.setActionFor("scout", "spawn", onSpawn)
game.setActionFor("scout", "defeat", onDefeat)
# GAME LOOP
# The main game loop with time-based functions.
def checkTimeScore():
game.score -= TIME_SCORE
if game.score < 0:
game.score = 0
def checkPowerTimer():
game.powerTime = game.powerEndTime - game.time
if game.powerTime <= 0:
game.powerTime = 0
if player.scale == 2:
powerPlayerDown()
def checkTimers():
checkTimeScore()
checkPowerTimer()
while True:
checkTimers()
# Win the game!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment