• 「网易官方」极客战记(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

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

  • 相关阅读:
    css js 解除网页无法选择进而复制的限制,bd文库无法复制
    Git命令简记
    DDD基本概念-未完成
    多线程隙-IO模型(BIO、NIO、AIO)
    RabbitMQ笔记-保证消息队列高可用
    关于fiddler手机抓包
    spring控制反转是谁在何时何地反转给谁?依赖注入??
    Cookie、Session、Token的区别
    详解Redis中两种持久化机制RDB和AOF
    Java中线程池的抛出策略、阻塞队列、内存溢出
  • 原文地址:https://www.cnblogs.com/codecombat/p/12794371.html
Copyright © 2020-2023  润新知