编程农场树木代码 — 棋盘格木头农场

树每次产 5 木头,比灌木划算,但讨厌贴边。东南西北每多一棵相邻的树,生长时间就翻倍;四个邻居是 16 倍。游戏提示用的是 `% 2`。

树木规则(为什么不能贴着种)

  • 长成的树产 5 木头。灌木更少,所以解锁树木后木头主要靠树。
  • 草地或耕地都能种。树木不强制 `till()`。
  • 只算东、南、西、北。每多一棵贴边的树,生长时间就 **翻倍**:1 邻 2 倍,2 邻 4 倍,3 邻 8 倍,4 邻 16 倍。
  • 对角线不算。棋盘格上的树只在角上挨着。

为什么用棋盘格,而不是整田种树

如果每个格子都种树,田中间四面都是邻居,生长慢 16 倍。格子全是树,每秒木头反而更少。

在 `(x + y) % 2 == 0` 的格子种树(种奇数格也可以)。另一色种灌木,格子不会闲着。游戏提示用的就是 `% 2`。

  • 读坐标: `get_pos_x()` 和 `get_pos_y()`。
  • 分色: 和为偶数 → `plant(Entities.Tree)`。奇数 → `plant(Entities.Bush)`。
  • 循环: `can_harvest()` 再 `harvest()`,种植,然后 `move`。

偶数格种树,奇数格种灌木

可复制的树木 + 灌木脚本

Step 1 `% 2` 判断

和游戏提示同一套颜色。想把树换到另一色,把 `== 0` 和 `== 1` 对调即可。

python
x = get_pos_x()
y = get_pos_y()

if (x + y) % 2 == 0:
    plant(Entities.Tree)
else:
    plant(Entities.Bush)

Step 2 扫田、收割、种植、移动

能收就收,再按格子颜色种植,然后走完整张田。一直循环。

完整源代码

Python
python
def go_to(x, y):
    while get_pos_x() != x:
        if get_pos_x() < x:
            move(East)
        else:
            move(West)
    while get_pos_y() != y:
        if get_pos_y() < y:
            move(North)
        else:
            move(South)

clear()
while True:
    size = get_world_size()
    for y in range(size):
        for x in range(size):
            go_to(x, y)
            if can_harvest():
                harvest()
            if (x + y) % 2 == 0:
                plant(Entities.Tree)
            else:
                plant(Entities.Bush)

可选:浇水

浇水能加快生长,但消不掉相邻惩罚:四个邻居仍然是 16 倍,只是湿土上的 16 倍。写在 `plant(...)` 后面即可。

python
if get_water() < 0.75:
    use_item(Items.Water_Tank)

下一步:南瓜,然后是多元种植

木头稳定后去解锁南瓜。大约五分之一会枯死;整田长齐再收巨大南瓜。 南瓜代码

多元种植是更后面的机制。`get_companion()` 会告诉你当前作物想要哪种邻居。那是另一套布局,不要和这套棋盘格混用。