# Step 4 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 # The duration of power-ups. game.powerDuration = 6 # 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") # Adding ui for game.powerTime: ui.track(game, "powerTime") game.addCollectGoal() game.addSurviveGoal(); player = game.spawnPlayerXY("knight", 8, 8) player.maxSpeed = 30 # The function make the player big and strong. def powerPlayerUp(): player.scale = 2 player.attackDamage = 100 game.powerEndTime = game.time + game.powerDuration # The function return the player in the normal state. def powerPlayerDown(): player.scale = 1 player.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 powerPlayerUp to strengthen the player: powerPlayerUp() 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.defeat() player.on("collect", onCollect) player.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 = player.maxHealth while True: # Enemies run away from the big player. if player.scale == 2: unit.behavior = "RunsAway" else: unit.behavior = "AttacksNearest" def onDefeat(event): # Increase game.score for defeated enemies: game.score += 10 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 player is powered, then it's time to power-down. if player.scale == 2: powerPlayerDown() # Lets combine all the time based functions. def checkTimers(): checkTimeScore() checkPowerTimer() while True: checkTimers() # Win the game.