同学们,欢迎回到编程农场!在上一节课中,我们学会了让无人机走直线和简单的循环。但真实的农场是一个二维的网格空间,今天我们将学习如何指挥无人机像“扫描仪”一样扫过整个农场,并利用数学的魔法来优化植物的生长速度。

🥕 任务一:开垦农场,种植胡萝卜

我们要种胡萝卜了!但在种胡萝卜之前,有一条重要的农业规则:胡萝卜不能种在草地上,必须先松土。

1. 新的指令:翻土与种植

  • till():翻土指令。调用它,脚下的草地 (Grounds.Grassland) 就会变成适合种植的泥土 (Grounds.Soil)。如果再调用一次,泥土又会变回草地。

  • plant(Entities.Carrot):种下胡萝卜。注意,种胡萝卜会消耗我们库存里的“干草”和“木材”哦!

2. 核心概念:嵌套循环 (Nested Loops)

如何让无人机走遍农场的每一个角落(比如 $32 \times 32$ 的网格)?这时候我们需要用两个 for 循环套在一起,这叫做“嵌套循环”。

运行逻辑: 想象你在看书,从左到右看完一行(内层循环),然后再换到下一行继续(外层循环)。

👨‍💻 实战代码:全自动胡萝卜播种机

size = get_world_size() # 获取农场的大小

# 外层循环:控制无人机向东(右)移动的列数
for i in range(size):
    
    # 内层循环:控制无人机在每一列中向北(上)移动的格数
    for j in range(size):
        # 1. 翻土
        if get_ground_type() == Grounds.Grassland:
            till()
        # 2. 种胡萝卜
        plant(Entities.Carrot)
        # 3. 向上走一格
        move(North)
        
    # 一列种完后,向右平移一列,准备种下一列
    move(East)

🌳 任务二:种树的智慧与“奇偶校验”

现在,我们要种树 (Entities.Tree) 来获取木材。每棵树能产出 5 份木材,收益很高。但树有一个娇气的特性:它们需要生存空间。

如果相邻的格子上(正北、正南、正东、正西)有其他的树,它们的生长速度就会减慢一倍!如果上下左右都种满了树,生长周期会变成原来的 16 倍(2 2 2 * 2)。

1. 策略:棋盘式种植法

为了让树长得最快,我们不能挨着种,而应该像“国际象棋棋盘”上的黑白格一样,交错着种。

2. 核心数学魔法:取余运算符 %

怎么让电脑知道当前格子该不该种树呢?我们需要获取无人机的坐标 $(x, y)$

  • get_pos_x():获取当前的 X 坐标(列)。

  • get_pos_y():获取当前的 Y 坐标(行)。

在 Python 中,% 是用来求余数的。

任何数 % 2,结果要么是 0(偶数),要么是 1(奇数)。

魔法规律: 如果我们把格子的 X 和 Y 加起来,只要 (X + Y) 是偶数的地方我们就种树,是奇数的地方我们跳过,就能完美种出一个棋盘!

👨‍💻 实战代码:高效树木种植阵型

size = get_world_size()

for i in range(size):
    for j in range(size):
        # 获取当前坐标
        x = get_pos_x()
        y = get_pos_y()
        
        # 判断 (x + y) 是不是偶数
        if (x + y) % 2 == 0:
            plant(Entities.Tree)
            
        move(North)
    move(East)

(提示:用这个阵型,你不仅能收获木材,还能体验到算法优化带来的速度飞跃!)