zoukankan      html  css  js  c++  java
  • 「网易官方」极客战记(codecombat)攻略-游戏开发2-冻结标签-freeze-tag

                                                                              (点击图片进入关卡)

    让我们玩标签。

    简介

    当一个物体接触另一个物体时,它会触发一个 "collide" 事件。

    你可以使用它在其他 spawnables,不仅是英雄。

    在这个游戏中,英雄可以给弓箭手加标签并 "freeze" 它们,其他弓箭手可以不加标签的 "frozen" 弓箭手。 不要混淆event.target 和 event.other 。

    默认代码

    # 让我们制作一个冻结标签的游戏!
    # game.tagged用于计数标记的弓箭手。
    game.tagged = 0
    ui.track(game, "tagged")
    goal = game.addManualGoal("Tag all archers.")
    # 孵化弓箭手。
    game.spawnXY("archer", 12, 52)
    game.spawnXY("archer", 12, 16)
    game.spawnXY("archer", 24, 52)
    game.spawnXY("archer", 24, 16)
    player = game.spawnPlayerXY('captain', 68, 24)
    player.maxSpeed = 20
    # 让玩家变大一些,这样标记弓箭手就更容易了。
    player.scale = 2
    # 设置弓箭手的速度和行为属性onSpawn
    def onSpawn(event):
        unit = event.target
        unit.behavior = "Scampers"
        unit.maxSpeed = 8
    game.setActionFor("archer", "spawn", onSpawn)
    # "collide" 事件的事件处理程序。
    def onCollide(event):
        # 事件拥有者与某事物相撞。
        unit = event.target
        # 单位碰撞的对象。
        other = event.other
        # 使用行为作为当前冻结状态的标记。
        # "Scampers"意味着射手尚未被标记。
        if unit.behavior == "Scampers":
            # 如果"other" 是玩家。

     

                # 将unit.behavior设置为 "Defends":

     

                # 增加game.tagged 1:

     

            pass
        if unit.behavior == "Defends":
            # 如果其他人的类型是 "archer":
            if other.type == "archer":
                # 将unit.behavior设置为"Scampers":
                unit.behavior = "Scampers"
                # 减少 game.tagged by 1.
                game.tagged -= 1
    # 使用setActionFor将onCollide分配给"archer"s的"collide"事件。
    while True:
        if game.tagged >= 4:
            game.setGoalState(goal, True)

    概览

    敬请期待!

    冻结标签 解法

    # 让我们制作一个冻结标签的游戏!
    # game.tagged用于计数标记的弓箭手。
    game.tagged = 0
    ui.track(game, "tagged")
    goal = game.addManualGoal("Tag all archers.")
    # 孵化弓箭手。
    game.spawnXY("archer", 12, 52)
    game.spawnXY("archer", 12, 16)
    game.spawnXY("archer", 24, 52)
    game.spawnXY("archer", 24, 16)
    player = game.spawnPlayerXY('captain', 68, 24)
    player.maxSpeed = 20
    # 让玩家变大一些,这样标记弓箭手就更容易了。
    player.scale = 2
    # 设置弓箭手的速度和行为属性onSpawn
    def onSpawn(event):
        unit = event.target
        unit.behavior = "Scampers"
        unit.maxSpeed = 8
    game.setActionFor("archer", "spawn", onSpawn)
    # "collide" 事件的事件处理程序。
    def onCollide(event):
        # 事件拥有者与某事物相撞。
        unit = event.target
        # 单位碰撞的对象。
        other = event.other
        # 使用行为作为当前冻结状态的标记。
        # "Scampers"意味着射手尚未被标记。
        if unit.behavior == "Scampers":
            # 如果"other" 是玩家。
            if other == player:
                other.say("Freeze!")
                # 将unit.behavior设置为 "Defends":
                unit.behavior = "Defends"
                # 增加game.tagged 1:
                game.tagged += 1
        if unit.behavior == "Defends":
            # 如果其他人的类型是 "archer":
            if other.type == "archer":
                # 将unit.behavior设置为"Scampers":
                unit.behavior = "Scampers"
                # 减少 game.tagged by 1.
                game.tagged -= 1
    # 使用setActionFor将onCollide分配给"archer"s的"collide"事件。
    game.setActionFor("archer", "collide", onCollide)
    while True:
        if game.tagged >= 4:
            game.setGoalState(goal, True)
     

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

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

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

  • 相关阅读:
    浅谈管道模型(Pipeline)
    经常使用的webservice接口
    2012年终总结
    【Linux】linux经常使用基本命令
    php:兄弟连之面向对象版图形计算器1
    学习selenium所须要具备的技术
    Sftp和ftp 差别、工作原理等(汇总ing)
    对数据分布进行可视化的方法
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    闭包和柯里化
  • 原文地址:https://www.cnblogs.com/codecombat/p/12806852.html
Copyright © 2011-2022 走看看