同学们,今天我们将接触农场里最神秘的魔法和最前沿的农业科技! 如果你的无人机总是嫌植物长得太慢,或者嫌木材产出太少,今天的两大法宝将彻底改变你的农场。

第一部分:魔法肥料与“奇异物质” 🦠

1. 催熟的诱惑

有时候,等植物长大实在太煎熬了。官方给我们提供了一个神器:肥料 (Items.Fertilizer)

  • 用法: use_item(Items.Fertilizer)

  • 效果: 瞬间让脚下植物的生长时间缩短 2 秒!

2. 肥料的“诅咒”(感染)

天下没有免费的午餐。如果你用肥料催熟了植物,它就会被感染(Infected)

  • 被感染的植物成熟后,你收割它,一半的产出会变成一种紫色的神秘物品——奇异物质 (Items.Weird_Substance)

3. 解药也是毒药:奇异物质的“十字扩散”

奇异物质到底有什么用?它是一个状态切换开关! 你可以把它用在植物上:use_item(Items.Weird_Substance)

  • 用在被感染的植物上:治愈它,恢复健康!

  • 用在健康的植物上:感染它!

⚠️ 最可怕的副作用(十字传染): 当你对一株植物使用奇异物质时,不仅它自己的状态会反转,它正上、正下、正左、正右四个相邻邻居的状态,也会瞬间反转! 这就意味着,如果你瞎用奇异物质,可能会导致整个农场爆发大面积感染,这就是经典的“点灯游戏”逻辑!

第二部分:混合种植,植物也有“好朋友” 🤝

你有没有发现,有时候植物挨在一起种,产量会莫名其妙变高? 官方揭秘了:草、灌木、树和胡萝卜,都有自己随机的“伴生偏好(好朋友)”。如果满足它们的心愿,产量直接 5 倍起步

1. 怎么知道它想要什么?

我们可以使用一个超级侦察函数:get_companion()。 但是,这个函数返回的信息有点复杂,它一次性吐出两个线索:朋友的名字朋友的坐标

在 Python 中,这种把好几个数据打包在一起的形式,叫做元组 (Tuple)。它看起来就像这样:(Entities.Carrot, (3, 5))

2. 见证奇迹的 Python 语法:元组解包 (Unpacking)

既然 get_companion() 吐出来的是一个打包好的“快递盒”,我们就需要把它拆开,分别放进我们的变量里。

👨‍💻 代码魔法:

# 一次性定义三个变量,接住函数返回的所有信息!
friend_type, (friend_x, friend_y) = get_companion()

print("它想要的好朋友是:", friend_type)
print("朋友应该种在 X 坐标:", friend_x)
print("朋友应该种在 Y 坐标:", friend_y)

这种“左右一一对应”的赋值方式,就是 Python 中极其优雅的“元组解包”!

3. 实战:为灌木寻找灵魂伴侣

让我们写一段完整的代码,种一棵灌木,并满足它的心愿,最后拿走 5 倍的木材!

import utils # 假设我们导入了上一节课写的移动工具

# 1. 种下灌木
if get_ground_type() == Grounds.Grassland:
    till()
plant(Entities.Bush)

# 2. 询问它的心愿
companion_info = get_companion()

# 如果它真的有心愿(不是 None)
if companion_info != None:
    
    # 3. 拆解心愿(元组解包)
    friend_type, (friend_x, friend_y) = companion_info
    
    # 4. 【关键步骤】拿小本子记下我现在的位置!
    # 否则一会儿去种完好朋友,我就找不到回家的路了
    my_x = get_pos_x()
    my_y = get_pos_y()
    
    # 5. 跑去指定的坐标,种下它的好朋友
    utils.goto(friend_x, friend_y)
    if get_ground_type() == Grounds.Grassland:
        till()
    plant(friend_type)
    
    # 6. 回到最初的灌木身边
    utils.goto(my_x, my_y)
    
    # 7. 等待成熟并收割 5 倍奖励!
    while not can_harvest():
        pass
    harvest()