像自动点名机一样的魔法,
帮我们处理成堆的糖果和士兵!
像老师拿着名单,一个一个数:
“第0个...第1个...第2个...”
很累,容易数错!
像全自动点名机!
“下一个!”
自动叫出每一个朋友的名字。
# For 循环:简单! for friend in hero.findFriends(): hero.command(friend, "attack", enemy) # 自动移动到下一个朋友!
range() 就像一个神奇的数字工厂!
你告诉它要生产多少个数字,它就会从 0 开始生产。
range(4) 生产出:# 建造4个士兵 for i in range(4): hero.summon("soldier") # i 会依次变成 0, 1, 2, 3 # 就像生产了4个玩具!
列表索引就像学校的储物柜编号。
我们想让“0号士兵”去“0号位置”,“1号士兵”去“1号位置”。
# 用索引 j 像红线一样把它们连起来 for j in range(len(friends)): point = points[j] # 从储物柜取出位置 friend = friends[j] # 找到对应座位的朋友 hero.command(friend, "move", point)
len(friends) 告诉我们队伍里有几个人。
points = [] 就像准备一排空盒子,等着我们往里面放坐标。
# 准备空盒子 points = [] points[0] = {"x": 33, "y": 42} # 装入第1个 points[1] = {"x": 47, "y": 42} # 装入第2个 # 根据朋友数量决定循环几次 for j in range(len(friends)): # ...
要执行攻击,必须像过关卡一样,同时满足多个条件!
if enemy and enemy.team == "ogres" \ and friend.distanceTo(enemy) < 5: # 三个绿灯全亮才攻击! hero.command(friend, "attack", enemy) else: # 否则就乖乖站好 hero.command(friend, "move", point)
(使用坐标列表精确控制每一个士兵的位置)
# 用法 1:直接遍历 (简单) for candy in candies: print("吃掉", candy)
适合:不需要知道位置,只需要处理每个东西。
# 用法 2:索引遍历 (配对) for i in range(len(friends)): friend = friends[i] point = points[i]
适合:要把“士兵”和“位置”一一对应的时候。