《编程农场》教程 (3):农业升级!开垦耕地与种植胡萝卜

欢迎回来,农场主!

在前两课中,你的无人机已经学会了如何像推土机一样,全自动地在农场里巡逻并收割干草。靠着这些干草,你应该已经解锁了游戏里的第一个真正意义上的“农作物”——胡萝卜(Carrots)

干草是野生的,但胡萝卜需要精心培育。今天,我们将学习如何真正地“种地”,这需要用到两个全新的指令:till()plant()

1. 翻土:使用 till() 开垦耕地

在现实世界中,你不能直接把种子撒在长满杂草的硬泥地上,无人机也一样。 如果你直接在草地(Grassland)上尝试种胡萝卜,游戏会无情地报错。

因此,种地的第一步是翻土。 游戏为我们提供了一个新函数:till()(原意为耕作、犁地)。

只要无人机停在普通的草地上,执行 till(),脚下的方块就会变成深色的耕地(Soil)

2. 播种:使用 plant() 种下希望

土地准备好后,就可以播种了。 我们使用 plant() 函数来进行种植。但是,农场里以后会有向日葵、南瓜、仙人掌等各种作物,无人机怎么知道你要种什么呢?

我们需要给 plant() 函数传递一个参数(Argument),告诉它具体的作物种类:

Python

plant(Entities.Carrot)
  • Entities:意思是“实体/物品大全”。

  • Carrot:意思是胡萝卜。 (⚠️ 排坑提示:注意 EntitiesECarrotC 都必须大写!中间用一个英文句号 . 连接,这在编程里叫做“调用对象的属性”。)

3. 实战:写一个“单格胡萝卜永动机”

现在,让我们把翻土、播种和收割结合起来。 很多新手会凭直觉写出这样的代码:

Python

# 错误示范:植物还没长大呢!
while True:
    till()
    plant(Entities.Carrot)
    harvest() # 刚种下就收割,会直接把种子铲掉!

千万别这么写! 胡萝卜不是瞬间长大的。如果你刚种下就立刻执行 harvest(),无人机会直接把还没发芽的种子给毁掉,导致你颗粒无收!

我们需要让无人机**“耐心等待”**。 回忆一下我们在第一课学到的 can_harvest()(检查是否可以收割)。我们可以用它来做个“死等”的循环:

Python

# 正确示范:单格胡萝卜永动机
while True:
    # 1. 翻土
    till()
    
    # 2. 种胡萝卜
    plant(Entities.Carrot)
    
    # 3. 核心:耐心等待它长大!
    while not can_harvest():
        pass  
        
    # 4. 长熟了,收割!
    harvest()

🧠 代码拆解:什么是 pass

注意看上面代码里的这一段:

Python

    while not can_harvest():
        pass
  • not:是编程里的“反义词”。not can_harvest() 的意思就是“还没熟”。

  • pass:这是 Python 语言里的一个特殊单词,意思是"什么都不做,直接跳过”。 连起来的意思就是:“只要胡萝卜还没熟,无人机就什么都不做,在原地傻等,直到它熟了为止,才会跳出这个循环往下走。”

4. 结合移动:铺满整片农场!

现在,把我们在第二课学到的 for 循环和 move() 结合进来,我们就可以让无人机在整片农场上种满胡萝卜了:

Python

size = get_world_size()

for x in range(size):
    for y in range(size):
        # 翻土、种植
        till()
        plant(Entities.Carrot)
        
        # 原地等待这颗胡萝卜成熟
        while not can_harvest():
            pass
            
        # 收割并走向下一格
        harvest()
        move(North)
        
    # 换行
    move(East)

把这段代码输入到游戏里,你会看到无人机走到一个格子上,翻土、播种,然后静静地停在半空中等待,等胡萝卜“嘭”地一下长出来,它一刀收割,然后立刻飞向下一格。

结语: 恭喜你!你已经掌握了《编程农场》中最核心的种植循环(翻土 -> 种植 -> 等待 -> 收割)。你的胡萝卜库存将会开始稳步上升!

但是,你可能会发现一个问题: 无人机每种一棵胡萝卜,都要在原地傻傻地等它长大,这太浪费时间了!真正的农业大亨应该是“一边走一边种,种满全图后再回来统一收割”。