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

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

原文地址:https://www.cnblogs.com/codecombat/p/12806852.html