编程农场树木代码 — 棋盘格木头农场
树每次产 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 扫田、收割、种植、移动
能收就收,再按格子颜色种植,然后走完整张田。一直循环。
完整源代码
Pythonpython
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()` 会告诉你当前作物想要哪种邻居。那是另一套布局,不要和这套棋盘格混用。