CodeCombat代码全记录(Python学习利器)--SARVEN沙漠(第三章)代码3

本攻略详细解析了游戏编程中的各种挑战关卡,包括控制英雄、收集资源、利用宠物辅助战斗等策略,帮助玩家掌握游戏编程的基本技巧。

守时

花钱花钱,有钱别攒着,该买装备买装备。

# 使用你的新技能来选择你要做什么: hero.time

while True:
    # 如果是前十秒,攻击。
    if hero.time < 10:
        enemy = hero.findNearestEnemy()
        if enemy:
            hero.attack(enemy)
        pass
    # 否则,如果是前35秒,收集硬币。
    elif hero.time < 35:
        item = hero.findNearestItem()
        if item:
            hero.moveXY(item.pos.x, item.pos.y)
        pass
    # 35秒后,再次发起攻击!
    else:
        enemy = hero.findNearestEnemy()
        if enemy:
            hero.attack(enemy)
        pass

沙丘苦战(挑战关卡)

这关简直太变态了,你需要不断的尝试才知道关卡是怎么回事。word天!!!

1.首先你需要完全的控制旗子。

2.用旗子控制好你的英雄。

3.要向右走3个场景,每个场景中消灭3个骷髅

4.这关坑的地方就是由于作者没有给骷髅怪还有牦牛怪定义类型,所以无法用类型去实现是否攻击牦牛,你只能用旗子控制

5.初始碰到boss的时候,会无法获取Boss的状态,你需要和boss绕圈圈。

6.注意乌鸦,前期会给你提示,后期遇到Boss的时候会给你血瓶。

7.boss会招3-5波小骷髅,打死小骷髅后,Boss的状态才会变成可攻击状态。

8.尽量保证你的血量在1000以上,否则在英雄无法控制的情况下,你会被牦牛撞死。。。

9.英雄不受控制的情况下就多插旗吧。

10.我这里代码简单写了,大家可以自行添加,比如使用你的宠物捡血瓶,判断英雄的血量等。

11.多来几遍,祝你好运!!

# 去关卡的最右边找到新的区域。
# 查看指南了解更多详情。
def pickUpFlag():
    flag = hero.findFlag()
    if flag:
        hero.pickUpFlag(flag)

while True:
    pickUpFlag()
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)
    else:
        pickUpFlag()

囤积黄金

第三章我们会比之前学到很多新的东西,好,我们本节学习如何跳出循环。

# 收集25金,然后告诉 Naria 总数。
# 当totalGold >= 25,使用 break 来停止收集。

totalGold = 0
while True:
    coin = hero.findNearestItem()
    if coin:
        # 捡起硬币。
        hero.moveXY(coin.pos.x,coin.pos.y)
        # 将硬币的价值加到totalGold。
        # 使用以下方法得到它的价值::  coin.value
        totalGold += coin.value
        pass
    if totalGold >= 25:
        # 这会中断跳出循环并执行循环下面的语句。
        # 循环结束后,运行循环后的代码。
        break

# 完成收集黄金!
hero.moveXY(58, 33)
# 去告诉 Naria 你收集了多少黄金。
hero.say("I collect" + totalGold  + "Naria")

沙漠蘑菇

你需要换一个高级的宠物,否则不能开始关卡。

# 收集9个蘑菇。

# 这个函数让宠物给你取回药水。
def onSpawn(event):
    while True:
        # 宠物可以根据类型找到最近的物品。
        potion = pet.findNearestByType("potion")
        # 如果存在药水则让宠物取回:
        if potion:
            pet.fetch(potion)

pet.on("spawn", onSpawn)

# 蘑菇有毒,不要太快收集。
while True:
    someItem = hero.findNearestItem()
    if someItem and hero.health > hero.maxHealth / 3:
        # 收集someItem:
        hero.moveXY(someItem.pos.x,someItem.pos.y)

蘑菇之声

# 打败骷髅并打开宝箱。

def onSpawn (event):
    # 宠物要找到生命药水(类型是 "potion"):
    potion = pet.findNearestByType("potion")
    # 并将它取回:
    pet.fetch(potion)
    # 宠物要找到金钥匙(类型是"gold-key"):
    key = pet.findNearestByType("gold-key")
    # 并将它取回:
    pet.fetch(key)

# 宠物可以发现的不仅仅是物品:
skeleton = pet.findNearestByType("skeleton")
pet.on("spawn", onSpawn)

while True:
    if skeleton.health > 0:
        hero.attack(skeleton)
    else:
        hero.moveXY(31, 38)

钥匙陷阱

# 获得三把钥匙并释放圣骑士。

def onSpawn(event):
    # 宠物需要找到并拿回3把钥匙。
    # 你需要后续类型的物品:
    # "bronze-key"、"silver-key"和"gold-key"。
    key1 = pet.findNearestByType("bronze-key")
    pet.fetch(key1)
    key2 = pet.findNearestByType("silver-key")
    pet.fetch(key2)
    key3 = pet.findNearestByType("gold-key")
    pet.fetch(key3)

pet.on("spawn", onSpawn)

while True:
    enemy = hero.findNearestEnemy()
    if enemy and enemy.team == "ogres":
        hero.attack(enemy)
    if hero.health < 300:
        # 你也可以在主线程中使用宠物。
        potion = pet.findNearestByType("potion")
        if potion:
            hero.moveXY(potion.pos.x, potion.pos.y)

追逐他们

# 打败食人魔和治疗英雄

# 宠物是你唯一的希望。
def onSpawn(e):
    while True:
        enemy = pet.findNearestByType("munchkin")
        if enemy and pet.isReady("chase"):
            pet.chase(enemy)
        # 寻找并获取 "potion"
        potion = pet.findNearestByType("potion")
        if potion:
            pet.fetch(potion)

# 在 "spawn" 事件中分配 "onSpawn" ”处理程序:
pet.on("spawn",onSpawn)

地下商业

# 积攒300黄金并逃出地牢。
def onSpawn(event):
    # 派遣宠物绕地牢找走动:
    #coin = pet.findNearestByType("gold-coin")
    # 别忘了让它回到英雄那里:
    #pet.moveXY(coin.pos.x, coin.pos.y)
    #pet.moveXY(hero.pos.x, hero.pos.y)
    pet.moveXY(21, 11)
    pet.moveXY(72, 12)
    pet.moveXY(68,56)
    pet.moveXY(23, 58)
    pet.moveXY(5, 35)
    pet.moveXY(hero.pos.x, hero.pos.y)

def pickCoin():
    item = hero.findNearestItem()
    if item:
        distance = hero.distanceTo(item)
        if distance < 10:
            hero.moveXY(item.pos.x,item.pos.y)
pet.on("spawn", onSpawn)

while True:
    # 守护农民:
    #goldTotal = 0
    enemy = hero.findNearestEnemy()
    if enemy:
        distance = hero.distanceTo(enemy)
        if distance < 5 and hero.isReady('bash'):
            hero.bash(enemy)
        hero.attack(enemy)
        hero.moveXY(23, 35)
    # 当你的黄金数目超过300,移动到红色标记:
    #item = hero.findNearestItem()
    pickCoin()
    if hero.gold > 300:
        hero.moveXY(50, 34)

布朗噪声

一遍一遍的不断尝试,费脑细胞啊费脑细胞。。。

# 收集宝藏并逃脱。

# 准备好英雄和宠物。
pet.moveXY(32, 28)
hero.moveXY(10, 19)
# 分散骷髅的注意力。
pet.distractionNoise()
# 当骷髅分心时偷偷潜行。
hero.moveXY(10, 46)

# 重复这个动作来获得宝藏:
hero.moveXY(46, 35)
pet.moveXY(64, 28)
pet.distractionNoise()
hero.moveXY(46, 28)
hero.moveXY(70, 9)
hero.moveXY(46, 22)
pet.distractionNoise()   

# 逃出地牢(红色标记):
hero.moveXY(40, 56)
CodeCombat 是一个通过玩游戏来学习编程的网站,也是GitHub上最大的开源CoffeeScript(一种脚本语言,类似JavaScript)项目,构筑在几十个开源项目之上的,有上千程序员和玩家为其编写程序、测试游戏。到目前为止,已经翻译成17种国外语言。       它是一款多人编码游戏,该款游戏的任务就是教会大家如何编程,并且通过游戏来提升开发者的技能水平。因为开源,我们可以为孩子们定制我们希望的样式。人们不需要任何编程知识即可了解程序的运行逻辑,并编出实用的代码。      游戏总共超过9千关,每个步骤都会有语音操作提示(非中文),无论你是新手还是编程精英都可以加入到这款游戏中。最重要的是,你是写代码执行游戏。你要扮演得是一名非常有力量的魔法师,要通过你写代码魔法,让你的人去消灭怪兽(其实是怪物)。看起来像是塔防游戏——《王城保卫战》,但却是一款即时战略游戏。每关都会有对话讲解如何操作(遗憾没有中文)左侧是游戏界面,右侧是代码界面,通过在右侧输入关键语句代码,控制左侧角色的移动和攻击等动作。前几关非常简单,几行“上下左右”和“攻击”的代码即可完成通关。每关结束后都有个回顾,告诉你在上一关学到了什么。当输入错误,比如大小写错误,在代码下方会提示具体的出错信息,玩家可以据此Debug。第二关中,你要先去右边吃蘑菇变强,再去击杀怪物。(点击图片查看具体代码,其实向右移动一步即可迟到蘑菇,代码中是两步)第三关,在击杀第一个怪物后,角色的血也不多了,所以要先去下方喝药瓶。下去喝药瓶,输入代码按回车,角色就会照做。第四关前N关都是编程中最基本的顺序语句,随着关数的提升,像“if…else,then”等判断、循环语句也会逐渐加入,可玩性越来越高。玩家在不知不觉也就具备了编程思维。 标签:编程游戏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值