标签:属性 解法 core def get eth 时间 evel 价值
(点击图片进入关卡)
最有价值的物品最先消失。
简介
要做这个简单的收集游戏,我们需要掌握时间管理。
使用时间戳追踪何时刷新新的宝藏:
if game.time > game.spawnTime:
spawnSomething()
game.spawnTime += spawnInterval
此外,我们可以保存一个时间戳作为一个物品的属性跟踪当它的时间 destroy() 该物品。
默认代码
# 产生随机放置的宝藏,然后销毁它们。
# 这会在随机点生成一个具有生命期的物品。
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
# 这就产生了宝藏。
def spawnTreasures():
spawnValuable("bronze-coin", 6)
spawnValuable("silver-coin", 5)
spawnValuable("gold-coin", 4)
spawnValuable("gem", 2)
# 物品的事件处理程序。
def onSpawn(event):
item = event.target
while True:
# 如果游戏时间大于物品销毁时间:
if item.destroyTime < game.time:
# 调用item的destroy() 方法:
item.destroy()
game.setActionFor("bronze-coin", "spawn", onSpawn)
game.setActionFor("silver-coin", "spawn", onSpawn)
game.setActionFor("gold-coin", "spawn", onSpawn)
game.setActionFor("gem", "spawn", onSpawn)
# 游戏设置,目标和用户界面。
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("30秒内收集至少50颗黄金。")
# 球员设置。
player = game.spawnPlayerXY("captain", 40, 34)
player.maxSpeed = 25
def onCollect(event):
item = event.other
# 如果物品具有"value"属性:
# 按物品价值增加游戏得分:
player.on("collect", onCollect)
# 检查距离宝藏产生的倒计时。
def checkSpawns():
# 如果game.time大于game.spawnTime:
# 调用SpWaNo珍宝创建更多的物品。
# 通过game.spawnInterval增加game.spawnTime:
pass
# 这检查目标的状态。
def checkGoal():
if game.score > 50:
game.setGoalState(goal, True)
else:
game.setGoalState(goal, True)
# 这检查游戏状态。
def checkGameOver():
if game.time > 30:
checkGoal()
db.set("topScore", game.score)
while True:
checkSpawns()
checkGameOver()
概览
在这个关卡,我们使用 "spawn" 事件来跟踪一个 while-true 循环中每个项的状态。
在循环中,当它 destroy 物品时,不需要中断循环,因为当物品 / 单位被破坏时,事件处理程序也停止。
奔向黄金 解法
# 产生随机放置的宝藏,然后销毁它们。
# 这会在随机点生成一个具有生命期的物品。
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
# 这就产生了宝藏。
def spawnTreasures():
spawnValuable("bronze-coin", 6)
spawnValuable("silver-coin", 5)
spawnValuable("gold-coin", 4)
spawnValuable("gem", 2)
# 物品的事件处理程序。
def onSpawn(event):
item = event.target
while True:
# 如果游戏时间大于物品销毁时间:
if item.destroyTime < game.time:
# 调用item的destroy() 方法:
item.destroy()
game.setActionFor("bronze-coin", "spawn", onSpawn)
game.setActionFor("silver-coin", "spawn", onSpawn)
game.setActionFor("gold-coin", "spawn", onSpawn)
game.setActionFor("gem", "spawn", onSpawn)
# 游戏设置,目标和用户界面。
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("30秒内收集至少50颗黄金。")
# 球员设置。
player = game.spawnPlayerXY("captain", 40, 34)
player.maxSpeed = 25
def onCollect(event):
item = event.other
# 如果物品具有"value"属性:
if item.value:
# 按物品价值增加游戏得分:
game.score += item.value
player.on("collect", onCollect)
# 检查距离宝藏产生的倒计时。
def checkSpawns():
# 如果game.time大于game.spawnTime:
if game.time > game.spawnTime:
# 调用SpWaNo珍宝创建更多的物品。
spawnTreasures()
# 通过game.spawnInterval增加game.spawnTime:
game.spawnTime += game.spawnInterval
# 这检查目标的状态。
def checkGoal():
if game.score > 50:
game.setGoalState(goal, True)
else:
game.setGoalState(goal, True)
# 这检查游戏状态。
def checkGameOver():
if game.time > 30:
checkGoal()
db.set("topScore", game.score)
while True:
checkSpawns()
checkGameOver()
「网易官方」极客战记(codecombat)攻略-游戏开发2-奔向黄金-run-for-gold
标签:属性 解法 core def get eth 时间 evel 价值
原文地址:https://www.cnblogs.com/codecombat/p/12838220.html