
当記事はChatGPTが出力した文章を使用しています。
このゲームの関連記事
前回
デバッグ&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した?”を発見できる)。
迷ったらこの流れで診断🛠️
-
期待通り動かない行にブレークポイント👉ステップ実行
-
その場に**
print()を1〜2行**だけ仕込む(結果/座標) -
ログを見て、条件 or 命令 or 移動のどこがズレかを特定
-
直ったら**
printを消す**かquick_printに切替(本番は軽く)
わざわざprintでログを出す必要ある?
短いコードなら“動く/動かない”は見れば分かる。でもね、print()が刺さるのは――
-
「なぜそうなったか」(原因の切り分け)
-
「どのくらい起きてるか」(回数/頻度の測定)
-
「たまにだけ起きる」レア不具合の特定
-
「勘違いしてる前提」の発見
みたいな“目視だけだと曖昧”なとこなのよ💅
printは“常用”じゃなくて、必要なときだけオンにする“デバッグ用ライト”って思ってOKだよ💅✨
ただ、バグ特定・チューニング・前提の勘違い発見には超強いから、使う瞬間を選ぶのがコツ👍
いつ使うと神?
-
バグの切り分け:条件は通ってる?地面はSoil?資材は足りてる?を一発確認👀
-
チューニング:wait何tickが最速? → “収穫/100tick”みたいに数で決める⏱️
-
レア不具合:角だけラップするとか“たまにだけ”起きるやつを捕まえる🕵️♀️
続き