【農家は Replace() されました】第14回 水やりと木|ギャルから学ぶドローン農業【超初心者向け攻略】

当記事はChatGPTが出力した文章を使用しています。

 

このゲームの関連記事

www.himajin-block30.com

 

前回

www.himajin-block30.com

 

木は間引き配置&必要時だけ給水の“無限ループ”

  • 木は隣接(N/E/S/W)に木があると2倍遅くなる→ 真ん中列でも(x+y)が偶数のタイルだけ木にして「1マス空け」を保証。

  • 水はタイルの水位 get_water() を見て、0.3未満 & 水在庫アリならだけ撒く(use_item(Items.Water))。

  • ニンジンは空なら耕してから植える(資材チェック)。草は刈るだけ

# ===== 仕事パーツ =====
def do_grass():
    if can_harvest():
        harvest()

def water_if_needed(threshold=0.3):
    # 木とニンジンの育成をそこそこ加速、でもムダ撒きはしない
    if get_water() < threshold and num_items(Items.Water) > 0:
        use_item(Items.Water)

def do_tree():
    # 木タイル:刈れたら収穫→空なら植え直し→必要なときだけ水やり
    if can_harvest():
        harvest()
        plant(Entities.Tree)
    elif get_entity_type() == None:
        plant(Entities.Tree)
    water_if_needed(0.3)

def do_carrot():
    # ニンジン:刈れたら収穫→空なら土を耕して資材があれば植える
    if can_harvest():
        harvest()
    if get_ground_type() == Grounds.Grassland:
        till()  # 土壌にする(トグル事故を避けるため必要時のみ)
    if num_items(Items.Hay) >= 1 and num_items(Items.Wood) >= 1:
        plant(Entities.Carrot)

# ===== 列の役割:0=🥕, 1=🌳(ただし間引き), 2=🌿 =====
def do_job_for_current_tile():
    x = get_pos_x()
    y = get_pos_y()
    lane = x % 3
    if lane == 0:
        do_carrot()
    elif lane == 1:
        # 木は (x+y) 偶数タイルだけに植えて隣接ペナルティを回避
        if (x + y) % 2 == 0:
            do_tree()
        else:
            do_grass()
    else:
        do_grass()

# ===== 端ガード付き・縦スネーク移動(1tickだけ動かす)=====
def snake_step(size, going_right, going_up):
    x = get_pos_x(); y = get_pos_y()
    if going_up:
        if y == size - 1:
            if going_right:
                if x == size - 1:
                    going_right = False
                    move(West)
                else:
                    move(East)
            else:
                if x == 0:
                    going_right = True
                    move(East)
                else:
                    move(West)
            going_up = False
        else:
            move(North)
    else:
        if y == 0:
            if going_right:
                if x == size - 1:
                    going_right = False
                    move(West)
                else:
                    move(East)
            else:
                if x == 0:
                    going_right = True
                    move(East)
                else:
                    move(West)
            going_up = True
        else:
            move(South)
    return going_right, going_up

# ===== 本体(無限ループ)=====
size = get_world_size()
going_right, going_up = True, True

while True:
    do_job_for_current_tile()                            # そのマスの仕事(収穫/植え/水やり)
    going_right, going_up = snake_step(size, going_right, going_up)  # 1歩だけ移動

ちょい運用メモ🌟

  • 木のタイルだけ給水にしてるから、水タンク(10秒ごと)をムダ遣いしにくいよ。もっと攻めたいなら threshold=0.5 に上げてOK。

  • 木の列を増やしたくなったら、奇数列にも同じ「(x+y)偶数だけ木」を適用すれば、広げても隣接ペナなしでいける👌

  • 資材不足なら do_carrot() の植え条件を少し緩めたり、草を増やすのもアリ。

 

 

続き

www.himajin-block30.com

 

 

このゲームの関連記事

www.himajin-block30.com