极客战记-道具参数-编程宝典 V

发布于 2020年1月20日

道具名称:编程宝典 V

解锁向量,数学,字符串,方程,数组和对象API。

获得技能

arrays:数组将整数索引映射到数组元素(任何类型的值)。

例程:

arr = ["this is the first element", "this is the second element"]
hero.say(arr[0])# 说出了 "this is the first element"
hero.say(arr[1]) # 说出了 "this is the second element"
hero.say(arr[len(arr) - 1])# 说出了 "this is the second element

arr[0] = 'new first element'
arr.append('a third element')# append() 函数会将元素加到数组最末尾

lastElement = arr[-1]# 可以使用-1作为索引来引用最后一个元素

break: break 语句会终止循环。

例程:

while True:
    enemy = hero.findNearest(hero.findEnemies())
    if not enemy:
        break
    hero.attack(enemy)
hero.say("/人◕ ‿‿ ◕人\")

continue: continue 语句跳过这次循环,并开始下一次循环。

例程:

friends = hero.findFriends()
for friend in friends:
    if friend.type not in hero.commandableTypes:
        continue
    hero.command(friend, "attack", friend.findNearestEnemy())

debug:类似Javascript的console.log的使用方式,传入任意数量的参数并且将它们打印出来。输出在你的JS控制台里。

else: else 语句可以跟在一个 if 语句的后面,这样当 if 的条件不成立时可以执行 else 后面的代码。

例程:

if hero.isReady("cleave"):
    hero.cleave(enemy)
else:
    hero.attack(enemy)

for-in-loop: for in 循环让你像单纯的 for 循环那样多次执行代码,只是这次是遍历字典的键。键迭代的顺序不一定一致。

例程:

for spellName in hero.spells:
    spell = hero.spells[spellName]
    hero.say('Spell ' + spellName + ' has range ' + spell.range)

for-loop: for 循环让你多次运行代码。它可以用来遍历列表的元素。 想指定固定循环次数,就遍历range(n)

例程:

enemies = hero.findEnemies()
for enemy in enemies:
    hero.say('I see you, ' + enemy.id)

for i in range(9):
    hero.say("Counted to " + i)

functions:函数让你能够创建一个可重复使用的代码块。

例程:

def square(number):
    return number * number

def moveUpAndDown(times):
    for i in range(times):
        hero.moveUp()
        hero.moveDown()

times = square(2)# 2的平方即4,times的值为4
hero.moveUpAndDown(times)# 将会向上再向下4次

if/else: if 语句说的是,"如果此条件为真,那就做这个"。

例程:

# 例如:如果你看到敌人,那就去攻击它。
enemy = hero.findNearestEnemy()
if enemy:
    hero.attack(enemy)

# 更多示例
enemy = hero.findNearestEnemy()
if not enemy:
    # 如果*没有*敌人,那就移动…
    hero.moveXY(30, 30)
elif enemy.type is "thrower":
    # ……否则,如果敌人的类型 *等于* "thrower",那么攻击……
    hero.attack(enemy)
elif hero.isReady("cleave") and hero.distanceTo(enemy) < 10:
    # …否则,如果"cleave"就绪*且*距离*小于*10米,那就劈斩…
    hero.cleave(enemy)
else:
    # 否则,防御(shield)
    hero.shield()

list comprehensions:列表推导式提供了创建列表的简洁方式。常见应用如:要创建的新列表中,每个元素是别的序列或可遍历对象对应成员的运算结果;或者要创建满足特定条件的元素子序列。

例程:

squares = [x**2 for x in range(10)]
big_squares = [x for x in squares if x >= 36]
combos = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]

objects:JavaScript 对象(object) 将键(key)(字符串) 映射(map)到 属性(property) (任何类型的值)。

例程:

start = {'x': 30, 'y': 35}
foo['id'] = 'Starting Position'
end = {'x': 50, 'y': 35, 'id': 'Ending Position'}
rng = {'start': start}
rng['end'] = end;

foo = {"Keys must be surrounded by quotes": "single or double, matching"};

while-loop: while 循环让你可以运行很多次代码——只要条件成立。

例程:

i = 10
while i >= 0:
    hero.say("Counted to " + i)
    i -= 1

while-true loop:使用 while true 循环 让你一遍遍执行代码。在每行开头输入 四个空格 ,否则代码不会重复执行!

例程:

# 举例:循环以通过迷宫。
while True:
    hero.moveRight()
    hero.moveDown()
    hero.moveRight()
    hero.moveUp()

# 举例:一次又一次攻击敌人。
while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)