(点击图片进入关卡)
硬币和宝石有不同的价值。 仔细计算它们。
简介
让我们来看看一种新的事件: “collect” 。
此事件允许您跟踪由某个角色收集的项目。
宝石和各种类型的硬币有不同的价值。 通过 ` collect' 事件,我们可以计算所有收集的项目的总价值。
def onCollect(event):
who = event.target
what = event.other
game.score += what.value
who.say("I found " + what)
somebody.on("collect", onCollect)
让我们制作一个随机生成的珍品的简单收藏游戏。
在 秒内收集至少 220 金币。
默认代码
敬请期待!
概览
collect' 事件数据有两个重要的属性: target 和 other 。
target 是行动的主题 - 谁收集了一些东西(以及事件的 "owner")。
other 是收集的对象 - 收集的内容。
所以就像这样一句话: `target'已经收集到'other'。
我们使用术语 other 而不是 item ,因为会有更多的东西 将来有一个主题和对象的事件,以及其他所有这些事件可以一致使用。
这也是一种用于专业游戏引擎的惯例,您可以在继续制作自己的游戏时看到 CodeCombat 以外的游戏!
当收集器 "steps on" 一个项目(收集它)时,触发 ` collect' 事件。 在这种情况下,会发生默认收集行动(例如,药剂治疗)并且物品消失。
你可以跟踪这些事件并对它们进行计数,并为它们添加自己的行动(例如增加药剂的攻击伤害)。 变得有创意!
会计部 解法
# 计算收集的项目值并将其用于评分。
# 设置字符。
player = game.spawnPlayerXY("captain", 40, 34)
player.maxSpeed = 20
# 宝石是最有价值的物品。
game.spawnXY("chest", 68, 56)
game.spawnXY("chest", 14, 14)
# 这个函数随机产生一个随机项目。
def spawnRandomItem():
itemNumber = game.randomInteger(1, 3)
x = game.randomInteger(12, 68)
y = game.randomInteger(12, 56)
if itemNumber == 1:
game.spawnXY("bronze-coin", x, y)
elif itemNumber == 2:
game.spawnXY("gold-coin", x, y)
elif itemNumber == 3:
game.spawnXY("gem", x, y)
itemInterval = 1
itemSpawnTime = 0
def checkSpawnTimer():
if game.time >= itemSpawnTime:
# <%= call_spawn %>
spawnRandomItem()
itemSpawnTime += itemInterval
game.score = 0
# "collect" 事件是通过收集东西来触发的。
def onCollect(event):
# event.target包含收集器。
collector = event.target
# event.other包含收集的项目。
item = event.other
if item.value:
collector.health += item.value
# 通过该项目的`value`增加游戏分数:
game.score += item.value
player.on("collect", onCollect)
# 在“collect”事件上为“player”分配onCollect处理程序。
endTime = 20
# 玩家需要赢得的比分。
requiredScore = 220
goldGoal = game.addManualGoal('在20秒内收集至少220金币。')
ui.track(game, "score")
def checkGoals():
if game.score >= requiredScore:
game.setGoalState(goldGoal, True)
while True:
checkSpawnTimer()
checkGoals()