「网易官方」极客战记(codecombat)攻略-游戏开发2-会计部-accounts-department

                                                                          (点击图片进入关卡)

硬币和宝石有不同的价值。 仔细计算它们。

简介

让我们来看看一种新的事件: “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()
 
 

本攻略发于极客战记官方教学栏目,原文地址为:

https://codecombat.163.com/news/jikezhanji-kuaijibu

极客战记——学编程,用玩的!

猜你喜欢

转载自www.cnblogs.com/codecombat/p/12794371.html
今日推荐