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

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

 

このゲームの関連記事

www.himajin-block30.com

 

前回

www.himajin-block30.com

 

デバッグ&print()

ここが最高💛

  • 見える化:いま何が起きたか(収穫した?植えた?どのマス?)をログに残せる📝

  • 切り分け:”条件が通ってない”のか”命令が効いてない”のかを一発で判断できる🕵️‍♀️

  • テンポ調整:空振りが多い/刈り逃しが出る…をtickのリズムでチューニングできる⏱️

  • 再現性outputタブ&output.txtに残るから、後から見返せる📄

  • 負荷コントロールquick_print()で出力ウィンドウだけに書けば、画面にばらまかず軽めにできる⚡


すぐ使える“現場ログ”レシピ

1) 収穫・植え直しが起きた場所だけログ(スパム回避)

while True:
    if can_harvest():
        harvest()
        plant(Entities.Carrot)   
        print("HARVEST at", get_pos_x(), get_pos_y())
    else:
        do_a_flip()              # 待ち1tick
    move(East)

→ イベントがあった時だけ座標を出すから、読みやすい&遅くならない👌

2) 3×3走査しながら「どこで何が起きたか」可視化

for r in range(get_world_size()):
    print("row start", r)
    for c in range(get_world_size()):
        if can_harvest():
            harvest()
            plant(Entities.Bush)     # ここは用途に応じてCarrot/Bushに
            print("  ok:", r, c)
        move(East)
    move(South)

r/c(行・列)を一緒に出して、抜け漏れの行/列を特定できる。

3) テンポ測りたい時の“フリップカウンタ”

for i in range(10):
    do_a_flip()
print("10 flips done")

→ ストップウォッチで実時間を測れば、1tickのおおよそ秒を把握できるよ⏱️
(出力が多くなる時は quick_print("10 flips done") でもOK)


quick_print() を使うタイミング

  • ログが大量になりそう(毎タイル/毎tick)な時は、画面には出さず出力ウィンドウだけに出す。

  • 画面へのprint()少なめに(重くなりにくい&見やすい)。


ブレークポイント&ステップ実行のコツ

  • 左のブレークポイント欄をクリックして赤丸→その行で一旦停止🛑

  • ▶︎(横の一歩ボタン)で1行ずつ進めてif can_harvest(): の判定→harvest()実行までを目視確認。

  • 変数名(r, cなど)にマウスを乗せると値が見えるから、ループの進行が追いやすい。


トラブルを潰すチェックリスト💣

  • if ...: / while True:コロン忘れない?

  • インデント統一(Tabだけ or Spaceだけ)。混ぜるとエラー。

  • can_harvest()()` 付け忘れ・全角カッコ注意。

  • till()初期整地だけ。常時運転で触ると草に戻る(ログで“どこでtillした?”を発見できる)。


迷ったらこの流れで診断🛠️

  1. 期待通り動かない行にブレークポイント👉ステップ実行

  2. その場に**print()を1〜2行**だけ仕込む(結果/座標)

  3. ログを見て、条件 or 命令 or 移動のどこがズレかを特定

  4. 直ったら**printを消す**か quick_printに切替(本番は軽く)

わざわざprintでログを出す必要ある?

短いコードなら“動く/動かない”は見れば分かる。でもね、print()が刺さるのは――

  • 「なぜそうなったか」(原因の切り分け)

  • 「どのくらい起きてるか」(回数/頻度の測定)

  • 「たまにだけ起きる」レア不具合の特定

  • 「勘違いしてる前提」の発見

みたいな“目視だけだと曖昧”なとこなのよ💅

 

printは“常用”じゃなくて、必要なときだけオンにする“デバッグ用ライト”って思ってOKだよ💅✨
ただ、バグ特定・チューニング・前提の勘違い発見には超強いから、使う瞬間を選ぶのがコツ👍

いつ使うと神?

  • バグの切り分け:条件は通ってる?地面はSoil?資材は足りてる?を一発確認👀

  • チューニング:wait何tickが最速? → “収穫/100tick”みたいに数で決める⏱️

  • レア不具合:角だけラップするとか“たまにだけ”起きるやつを捕まえる🕵️‍♀️

 

続き

www.himajin-block30.com

 

このゲームの関連記事

www.himajin-block30.com