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

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

 

このゲームの関連記事

www.himajin-block30.com

 

前回

www.himajin-block30.com

 

if文

「収穫できる時だけ収穫する」=ムダ打ちしない省エネループ👇

while True:
    if can_harvest():
        harvest()
  • can_harvest()True(足元が収穫OK)なら harvest() 実行。

  • False(まだ未成熟)なら何もしないで次ループ

  • ポイント:can_harvest() の呼び出し自体に1ティックかかるから、同じループ内で2回以上呼ばないのがコツだよ(1回で判定→分岐)。


“速すぎて刈れない” 問題を避ける👀

スピードUPで「成長より手が早い」状態だと、ひたすら空振りになりがち。
少し待ち時間を入れてあげると安定するよ。

見てて楽しい・待ち時間入り版🥳

while True:
    if can_harvest():
        harvest()
    else:
        do_a_flip()      # 1ティック分の“待ち”

もっと待つ(成長が遅い時)

while True:
    if can_harvest():
        harvest()
    else:
        do_a_flip()
        do_a_flip()      # 2ティック待ってから再チェック
  • 考え方
    1回のループで「チェック1ティック+(必要なら)フリップで待つ」を入れて、
    成長タイミングに被るチャンスを作る感じね。


if / elif / else の使い分け(今はこう覚えよ)

  • if … 条件を満たしたら実行

  • elif … 別の条件で分岐(今回は他条件がないので無理に使わなくてOK)

  • else … どの条件も当てはまらない時の処理

今の手持ちだと、if + else の2本で十分キレイに書けるよ👌


よくあるミス💣(ここだけチェック)

  • :(コロン)忘れ → if can_harvest(): / while True: どっちも最後に必須

  • インデントずれ → TabだけSpaceだけに統一(混在はエラー)

  • TrueTは大文字can_harvest小文字/アンダーバーも厳守

  • if can_harvest: (← かっこ忘れ)じゃダメ。関数は () を付けて呼ぶ


どれを使えばいい?あいらのおすすめ🌟

  1. まずは最小構成(上の一番シンプルなやつ)で挙動確認。

  2. 「全然刈れない/空振り多いな?」って感じたら、elseでフリップ1〜2回追加してリズム調整。

  3. 成長→収穫のテンポに合わせて最適な“待ち”を詰める。


 

コードの実行にかかる時間

  • このゲームはティック(tick)っていう“カチッ”単位で時間が進むよ。

  • 実行時間は「文字数」じゃなくて、実際に実行されたステートメントの数で決まる。

  • 1コマンド=だいたい1ティック。だから長いコードでも、動かない行は時間ゼロだし、短いコードでも毎回いっぱい実行されれば時間がかかるって感じ。

いま使えるコマンドのコスト感(超重要)

  • can_harvest()1ティック(説明文に明記されてたやつ)

  • harvest() → 体感 1ティック

  • do_a_flip() → 体感 1ティック

  • 構文だけの行(while True: とか if ...:)→ 0ティック

  • コメントや空行、インデント → 0ティック

ポイント:分岐やループ自体は時間を食わない
食うのは中で呼ぶ関数(harvest/flip/can_harvest)だよ。

実行時間はこう数える(例)

例1:ずっと収穫

while True:
    harvest()
  • 1周あたり 1ティックharvest() だけ)

例2:チェックしてから収穫

while True:
    if can_harvest():
        harvest()
  • 収穫できる時 → 2ティック(check1 + harvest1)

  • できない時 → 1ティック(check1 だけ)

例3:待ちを入れる(空振り減らす)

while True:
    if can_harvest():
        harvest()
    else:
        do_a_flip()
  • 収穫できる時 → 2ティック(check1 + harvest1)

  • できない時 → 2ティック(check1 + flip1)

do_a_flip() を2回にすれば“待ち2ティック”になるよ。
else: 側の回数でリズム調整するのがコツ💡

「コードが長い=遅い?」への答え

  • 文字数や行数そのものでは決まらない。

  • 実際に走った関数呼び出しの累計が実行時間。

    • だから、長いけど条件次第で滅多に通らない枝はコストほぼゼロ。

    • 短くても毎周 can_harvest()2回呼ぶ…みたいなのは無駄に遅くなる

スピードアップの影響

  • 「速度2倍」は1ティックの“現実時間”が短くなるってこと。

  • でもゲーム内ロジックはティック基準だから、コード設計はティック数で考えるのが正解👌


もし「今の畑で最適な“待ちティック数”が知りたい」ってなったら、
elsedo_a_flip() の回数を 1 → 2 → 3 と増やしてみて、

  • 空振りが多い → 待ちを増やす

  • 成熟しても刈り逃す(腐る) → 待ちを減らす
    でチューニングしてこ〜🌾🤖✨

 

ティックは秒数では表せない?

なんで固定じゃないの?

  • スピードUPとかで「1ティックの実時間」が短くなったりする⚡

  • ポーズ/負荷/描画などの影響もあるから、常に○秒=1tickとは言い切れないの。


でも“だいたい”の秒換算はできる?👉できる(自分の環境で計測)

いま解放されてるコマンドだけでできる簡易キャリブレーション💡

方法A:フリップ数から求める(超シンプル)

  1. このコードを走らせる(1ループ=1tick

    while True:
        do_a_flip()
    
  2. スマホのストップウォッチで10秒測りながら、フリップ回数を数える。

  3. 計算:

    • ticks/秒 ≈(フリップ回数)/ 10

    • 1tick ≈ 10 /(フリップ回数) 秒

例:10秒で 28回 回ったら → 1tick ≈ 10/28 ≈ 0.36秒

※ スピードアップを取ると値が半分くらいになるなど、変化するよ。


方法B:成長サイクルから求める(実務向け)

いま使える ifcan_harvest() で「収穫間隔のtick数」を出すやり方👇

while True:
    if can_harvest():
        harvest()
    else:
        do_a_flip()   # 待ち1tick
  • else でフリップ1回=1tick待って次チェック。

  • 収穫と収穫のあいだに出たフリップ回数を F と数える(目で数えるだけでOK)。

  • その間の総tickは 約 2F + 2(チェック+待ちが2tick/周、最後にチェック+収穫で+2)。

ここで方法Aで出した「1tickの秒」を掛ければ、作物の実時間の育成秒が概算できるよ🌾


まとめ(ギャル要点)

  • 1tickの秒は固定じゃない(速度UPや環境で変わる)。

  • でも自分の畑で計るなら、

    • A:do_a_flip() 連打で tick/秒を測る

    • B:if can_harvest() ループで 成長tickを数える

  • 秒換算=(tick数)×(1tickの秒) でOK💪

 

 

続き

www.himajin-block30.com

このゲームの関連記事

www.himajin-block30.com