• 「网易官方」极客战记(codecombat)攻略-游戏开发2-硬币游戏第 3 步:敌人-game-of-coins-step-3-enemies


                                                                                                                                                            (点击图片进入关卡)

    让我们在我们的游戏中添加一些敌人。

    简介

    在第三步的 Pac-Man 风格街机游戏系列中,我们会将敌人添加到游戏中。

    敌人使我们的游戏变得更具挑战性,难以预测。

    我们正在制作一个 “逃跑与捕捉” 式的游戏,在这种游戏中,如果敌人抓到玩家,敌人立即击败玩家

    我们将使用 "one-hit" 机制,所以敌人的攻击伤害应该大于或等于玩家的最大生命值。

    玩家必须避开食人魔...... 除非他们有加电(我们将在下一级创建加电)!

    使用键盘或鼠标进行播放器控制:

    1. W -> 向上
    2. S -> 向下
    3. A -> 左边
    4. D -> 右边
    5. 鼠标点击 -> 移动到该点

    默认代码

    # 创建Pac-Man风格街机游戏的第3步。
    # 游戏布局和项目。 向下滚动。
    game.spawnXY("forest", 16, 16)
    game.spawnXY("forest", 32, 16)
    game.spawnXY("forest", 48, 16)
    game.spawnXY("forest", 64, 16)
    game.spawnXY("forest", 16, 32)
    game.spawnXY("forest", 32, 32)
    game.spawnXY("forest", 48, 32)
    game.spawnXY("forest", 64, 32)
    game.spawnXY("forest", 16, 48)
    game.spawnXY("forest", 32, 48)
    game.spawnXY("forest", 48, 48)
    game.spawnXY("forest", 64, 48)
    game.spawnXY("bronze-coin", 16, 8)
    game.spawnXY("bronze-coin", 24, 8)
    game.spawnXY("bronze-coin", 32, 8)
    game.spawnXY("bronze-coin", 48, 8)
    game.spawnXY("bronze-coin", 56, 8)
    game.spawnXY("bronze-coin", 64, 8)
    game.spawnXY("bronze-coin", 72, 8)
    game.spawnXY("bronze-coin", 8, 16)
    game.spawnXY("bronze-coin", 24, 16)
    game.spawnXY("bronze-coin", 40, 16)
    game.spawnXY("bronze-coin", 56, 16)
    game.spawnXY("bronze-coin", 72, 16)
    game.spawnXY("bronze-coin", 8, 24)
    game.spawnXY("bronze-coin", 16, 24)
    game.spawnXY("bronze-coin", 24, 24)
    game.spawnXY("bronze-coin", 32, 24)
    game.spawnXY("bronze-coin", 40, 24)
    game.spawnXY("bronze-coin", 48, 24)
    game.spawnXY("bronze-coin", 56, 24)
    game.spawnXY("bronze-coin", 64, 24)
    game.spawnXY("bronze-coin", 72, 24)
    game.spawnXY("bronze-coin", 24, 32)
    game.spawnXY("bronze-coin", 56, 32)
    game.spawnXY("bronze-coin", 8, 40)
    game.spawnXY("bronze-coin", 16, 40)
    game.spawnXY("bronze-coin", 24, 40)
    game.spawnXY("bronze-coin", 32, 40)
    game.spawnXY("bronze-coin", 40, 40)
    game.spawnXY("bronze-coin", 48, 40)
    game.spawnXY("bronze-coin", 56, 40)
    game.spawnXY("bronze-coin", 64, 40)
    game.spawnXY("bronze-coin", 72, 40)
    game.spawnXY("bronze-coin", 8, 48)
    game.spawnXY("bronze-coin", 24, 48)
    game.spawnXY("bronze-coin", 40, 48)
    game.spawnXY("bronze-coin", 56, 48)
    game.spawnXY("bronze-coin", 72, 48)
    game.spawnXY("bronze-coin", 8, 56)
    game.spawnXY("bronze-coin", 16, 56)
    game.spawnXY("bronze-coin", 24, 56)
    game.spawnXY("bronze-coin", 32, 56)
    game.spawnXY("bronze-coin", 48, 56)
    game.spawnXY("bronze-coin", 56, 56)
    game.spawnXY("bronze-coin", 64, 56)
    game.spawnXY("bronze-coin", 72, 56)
    game.spawnXY("mushroom", 40, 8)
    game.spawnXY("mushroom", 8, 32)
    game.spawnXY("mushroom", 72, 32)
    game.spawnXY("mushroom", 40, 56)
    game.score = 1000
    ui.track(game, "time")
    ui.track(game, "score")
    # 让我们在没有能力强化的情况下简化游戏。
    game.addCollectGoal(10)
    game.addSurviveGoal()
    player = game.spawnPlayerXY("knight", 8, 8)
    player.maxSpeed = 32
    def onCollect(event):
        player = event.target
        item = event.other
        if item.type == "bronze-coin":
            game.score += 1
        if item.type == "mushroom":
            game.score += 5
    player.on("collect", onCollect)
    # 在中心生成一个怪物“生成器”:
    # 将生成器spawnType设置为“scout”。
    # 将生成器spawnDelay设置为大于5的值
    # 这个函数配置新产生的侦察兵。
    def onSpawn(event):
        unit = event.target
        unit.maxSpeed = 8
        # 将单位的攻击伤害设置为
        # 大于或等于玩家的Max Health.

     

    # 将"scout"s'"spawn"事件的处理程序设置为OnSPOWN
    def checkTimeScore():
        game.score -= 0.5
        if game.score < 0:
            game.score = 0
    while True:
        checkTimeScore()
    # 赢得游戏胜利。

    概览

    敌人会给你的游戏增添刺激。

    你可以在游戏中使用许多不同类型的敌人:他们可以与玩家作战, 他们可以追逐和抓住玩家,或者他们可以成为竞争者(比如赛车游戏)。

    如果我们使用 "generator" ,将敌人加入我们的游戏将会很简单。

    但是随着时间的推移会产生敌人,所以我们应该使用 "spawn" 事件来配置它们。

    目前,我们不能击败敌人,所以不需要 "defeat" 事件。 另外,最好让它们变慢,否则这将是一场非常艰难的比赛。

    硬币游戏第 3 步:敌人 解法

    # 游戏布局和项目。 向下滚动。
    game.spawnXY("forest", 16, 16)
    game.spawnXY("forest", 32, 16)
    game.spawnXY("forest", 48, 16)
    game.spawnXY("forest", 64, 16)
    game.spawnXY("forest", 16, 32)
    game.spawnXY("forest", 32, 32)
    game.spawnXY("forest", 48, 32)
    game.spawnXY("forest", 64, 32)
    game.spawnXY("forest", 16, 48)
    game.spawnXY("forest", 32, 48)
    game.spawnXY("forest", 48, 48)
    game.spawnXY("forest", 64, 48)
    game.spawnXY("bronze-coin", 16, 8)
    game.spawnXY("bronze-coin", 24, 8)
    game.spawnXY("bronze-coin", 32, 8)
    game.spawnXY("bronze-coin", 48, 8)
    game.spawnXY("bronze-coin", 56, 8)
    game.spawnXY("bronze-coin", 64, 8)
    game.spawnXY("bronze-coin", 72, 8)
    game.spawnXY("bronze-coin", 8, 16)
    game.spawnXY("bronze-coin", 24, 16)
    game.spawnXY("bronze-coin", 40, 16)
    game.spawnXY("bronze-coin", 56, 16)
    game.spawnXY("bronze-coin", 72, 16)
    game.spawnXY("bronze-coin", 8, 24)
    game.spawnXY("bronze-coin", 16, 24)
    game.spawnXY("bronze-coin", 24, 24)
    game.spawnXY("bronze-coin", 32, 24)
    game.spawnXY("bronze-coin", 40, 24)
    game.spawnXY("bronze-coin", 48, 24)
    game.spawnXY("bronze-coin", 56, 24)
    game.spawnXY("bronze-coin", 64, 24)
    game.spawnXY("bronze-coin", 72, 24)
    game.spawnXY("bronze-coin", 24, 32)
    game.spawnXY("bronze-coin", 56, 32)
    game.spawnXY("bronze-coin", 8, 40)
    game.spawnXY("bronze-coin", 16, 40)
    game.spawnXY("bronze-coin", 24, 40)
    game.spawnXY("bronze-coin", 32, 40)
    game.spawnXY("bronze-coin", 40, 40)
    game.spawnXY("bronze-coin", 48, 40)
    game.spawnXY("bronze-coin", 56, 40)
    game.spawnXY("bronze-coin", 64, 40)
    game.spawnXY("bronze-coin", 72, 40)
    game.spawnXY("bronze-coin", 8, 48)
    game.spawnXY("bronze-coin", 24, 48)
    game.spawnXY("bronze-coin", 40, 48)
    game.spawnXY("bronze-coin", 56, 48)
    game.spawnXY("bronze-coin", 72, 48)
    game.spawnXY("bronze-coin", 8, 56)
    game.spawnXY("bronze-coin", 16, 56)
    game.spawnXY("bronze-coin", 24, 56)
    game.spawnXY("bronze-coin", 32, 56)
    game.spawnXY("bronze-coin", 48, 56)
    game.spawnXY("bronze-coin", 56, 56)
    game.spawnXY("bronze-coin", 64, 56)
    game.spawnXY("bronze-coin", 72, 56)
    game.spawnXY("mushroom", 40, 8)
    game.spawnXY("mushroom", 8, 32)
    game.spawnXY("mushroom", 72, 32)
    game.spawnXY("mushroom", 40, 56)
    game.score = 1000
    ui.track(game, "time")
    ui.track(game, "score")
    # 让我们在没有能力强化的情况下简化游戏。
    game.addCollectGoal(10)
    # 添加一个生存的目标,因为我们现在有敌人:
    game.addSurviveGoal()
    player = game.spawnPlayerXY("knight", 8, 8)
    player.maxSpeed = 32
    def onCollect(event):
        player = event.target
        item = event.other
        if item.type == "bronze-coin":
            game.score += 1
        if item.type == "mushroom":
            game.score += 5
    player.on("collect", onCollect)
    # 在中心生成一个怪物“生成器”:
    generator = game.spawnXY("generator", 41, 31)
    # 将生成器spawnType设置为“scout”。
    generator.spawnType = "scout"
    # 将生成器spawnDelay设置为大于5的值
    generator.spawnDelay = 6
    # 这个函数配置新产生的侦察兵。
    def onSpawn(event):
        unit = event.target
        unit.maxSpeed = 8
        # 将单位的攻击伤害设置为
        # 大于或等于玩家的Max Health.
        unit.attackDamage = player.maxHealth
    # 将"scout"s'"spawn"事件的处理程序设置为OnSPOWN
    game.setActionFor("scout", "spawn", onSpawn)
    def checkTimeScore():
        game.score -= 0.5
        if game.score < 0:
            game.score = 0
    while True:
        checkTimeScore()
    # 赢得游戏胜利。
     

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

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

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

  • 相关阅读:
    hdu4135(容斥原理求质数,队列实现)
    poj2559(单调栈)
    poj2796(单调栈)
    icpc2018焦作Transport Ship(背包思想)
    icpc2018焦作Mathematical Curse(动态规划)
    2018icpc徐州OnlineA Hard to prepare
    icpc2018徐州OnlineG-Trace(线段树)
    hdu3499(分层图最短路 or 反向建图)
    MINE
    数论(Mathmatics)总结[1]
  • 原文地址:https://www.cnblogs.com/codecombat/p/12852285.html
Copyright © 2020-2023  润新知