当前位置: 首页 > 工具软件 > CodeCombat > 使用案例 >

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

年嘉禧
2023-12-01

先有付出 才有回报

# 改变while循环的条件。
# 在英雄生命值大于200滴血时,一直跑。
while hero.health > 200: # Δ 这行要改一下!
    hero.moveXY(48, 24)
    hero.moveXY(16, 24)
# 移动到Okar那里。
hero.moveXY(32, 40)

尘埃

# 使用循环直到你有足够的击杀10个芒奇金人

attacks = 0
while attacks < 10:
    # 攻击最近的敌人!
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)
    # 增量意味着增加1。
    # 增加你的攻击统计量。
    attacks += 1

# 当你完成后,撤退到伏击点。
hero.say("I should retreat!")  # ∆ 别站在那儿瞎扯!
hero.moveXY(79, 33)

Sarven 拯救(挑战关卡)

我比较懒,没有编写太复杂的代码,全程一杆大旗号令天下,杀无赦!!

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

海市蜃楼

其实我是最不喜欢使用旗子的,但是某些关卡你使用起来旗子发现会有很好的疗效!!

# 诱使食人魔陷入伏击!

# 当你的黄金小于25时,收集金币。
while hero.gold < 25:
    coin = hero.findNearestItem()
    hero.moveXY(coin.pos.x, coin.pos.y)
# 在while循环后,于白色X处建造一个"decoy"。
hero.buildXY("decoy", 72, 68)
# 当你生命值满时,挑衅侮辱食人魔。
if hero.health == hero.maxHealth:
    hero.say('小B ,来打我a来打我啊!~~')
# 然后退回到红色X处。
while True:
    flag = hero.findFlag()
    if flag:
        hero.pickUpFlag(flag)
        hero.say('小B ,来打我a来打我啊!~~')

别冲过去,安静点

这节我们学习求余的内容:
modulo,代码中定义好了求余的内容,简化写成了mod函数。

# 躲开炮弹,收集8颗宝石。
# 小心,大炮准备开火了!
# 以一个特殊的方式缓慢移动去迷惑敌人

# 这个函数返回一个值从0到30之间(0<n<30)。
def mod30(n):
    if n >= 30:
        return n - 30
    else:
        return n

# 这一功能将会返回一个从0到40的值
def mod40(n):
    # 使用一个 “if” 语句去返回正确的值
    if n >= 40:
        return n - 40
    else:
        return n

# 你不需要改变下面的代码:
while True:
    time = hero.time
    x = mod30(time) + 25
    y = mod40(time) + 10
    hero.moveXY(x, y)

诱饵和开关

# 诱捕陷阱中的食人魔。

# 该功能使英雄收集足够的金币。
def collectUntil(enoughGold):
    # 虽然英雄的黄金还不够充足:
    while hero.gold < enoughGold:
        coin = hero.findNearestItem()
        if coin:
            # 找到一个硬币,并带走它:
            hero.moveXY(coin.pos.x, coin.pos.y)

# 为一个诱饵收集黄金并将其制作在红色标记上。
collectUntil(25)
hero.buildXY("decoy", 40, 52)
# 最好躲起来。
hero.moveXY(20, 52)
# 使用collectUntil函数收集50个金币:
collectUntil(50)
# 在骨骼标记上建立一个 "decoy" :
hero.buildXY("decoy", 68, 22)
# 在木质标记上建立一个 "decoy":
hero.buildXY("decoy", 30, 20)

Z字行逃窜

# 从死亡峡谷逃脱!
# 使用真正的求余函数走出Z字形路线。

# 该函数返回一个0到15之间的值:
def mod15(n):
    while n >= 15:
        n -= 15
    return n

# 这个函数应该返回一个0到9之间的值:
def mod9(n):
    # 当n大于或等于9时,用n减去9:
    while n >= 9:
        n -= 9
    return n

# 不要更改以下代码:
while True:
    time = hero.time
    if time < 30:
        y = 10 + 3 * mod15(time)
    else:
        y = 20 + 3 * mod9(time)
    x = 10 + time
    hero.moveXY(x, y)

沙漠三角州

终于到了最常用的数组章节的内容了!!新的内容,请多看提示进行学习!!

# 只攻击在敌军名称(enemyNames)数组中的敌人
# 一定要按顺序攻击! 0→1→2→3
#这里定义了一个数组
enemyNames = ["Kog", "Godel", "Vorobun", "Rexxar"]
#注意数组的索引是从0开始的
hero.attack(enemyNames[0])
hero.attack(enemyNames[1])
# 攻击 enemyNames[2]
hero.attack(enemyNames[2])
# 攻击最后一个元素。
hero.attack(enemyNames[3])

立方雷区

数学姿势来了,前方高能!!!如果了解机器学的想学习算法内容的童鞋,这里要多练习好好掌握了啊!!~~
新的内容,请多看提示进行学习!

# 穿过雷区

# 这个函数返回乘以次数的数字。
def mult(number, times):
    total = 0
    while times > 0:
        total += number
        times -= 1
    return total

# 这个函数返回乘方的数字。
def power(number, exponent):
    total = 1
    # 补全函数。
    while exponent > 0:
        total *= number
        exponent -= 1
    return total

# 别修改这些代码
# 你可以在塔上找到方程的系数
tower = hero.findFriends()[0]
a = tower.a
b = tower.b
c = tower.c
d = tower.d
x = hero.pos.x

while True:
    # 用三次方程求路径
    y = a * power(x, 3) + b * power(x, 2) + c * power(x, 1) + d * power(x, 0)
    hero.moveXY(x, y)
    x = x + 5

 类似资料: