ブロックから Python へ
かんたんブロックで組んだ bot は、裏では Python のプログラムになっています。 ここでは、同じ動きをブロックと Python で並べて見ます。 Python を書けるようになると、ブロックにない作戦(偏差射撃・経路探索など)も使えます。
見くらべかた
Section titled “見くらべかた”下の 3 つの例は、上がブロック、下が Python です。
ブロックの右の番号と、Python の右の # 番号 が、同じ動きです。
例 1:敵のほうを向いて、前に進む
Section titled “例 1:敵のほうを向いて、前に進む”def update(state): me = state["me"] en = state["enemy"] # さいしょは「止まる・いまの向き・撃たない・バリアなし」 drive = "stop" steer = me["angle"] fire = False barrier = False # 作戦(かんたんブロックで組んだところ) steer = angle_to(me["x"], me["y"], en["x"], en["y"]) # 1 drive = "forward" # 2 return {"drive": drive, "steer": steer, "fire": fire, "barrier": barrier}Python は、3 つのかたまりに分けると読めます。
| かたまり | 何をしているか |
|---|---|
| はじめの 2 行 | ゲームからもらう情報(センサー)から、自分(me)と敵(en)を取り出す |
| 「さいしょは…」の 4 行 | 4 つの動き(drive steer fire barrier)に、いったんの値を入れる |
| 「作戦」の部分 | ブロックで置いたところ。 上から順に、動きを上書きしていく(あとから置いたほうが勝つ) |
最後の return が、4 つをまとめてゲームに返します。ブロックは、この「上書き」を 1 つずつ並べたものです。
例 2:見えているときだけ撃つ
Section titled “例 2:見えているときだけ撃つ”steer = angle_to(me["x"], me["y"], en["x"], en["y"]) # 1drive = "forward" # 2if (line_of_sight(state["map"]["grid"], me["x"], me["y"], en["x"], en["y"]) # 3 and me["can_fire"]): fire = True # 4| ブロック | Python |
|---|---|
| ❓ もし | if |
| かつ | and |
| 👁 敵が見える | line_of_sight という道具 |
| 🔋 いま撃てる | me["can_fire"] |
例 3:そうでなければ
Section titled “例 3:そうでなければ”if 弾まで < 1.2: # 1 steer = 弾をよける向き # 2 drive = "forward" # 3else: # 4 steer = angle_to(me["x"], me["y"], en["x"], en["y"]) # 5fire = True # 6- 「そうでなければ」は
elseです - 「弾がとんでくる」を使うと、作戦の前に「いちばん早く届く弾を調べる」部分が足されます(
弾までなどの変数は、そこで作られています) - 変数の名前に日本語が使えることも、ここで分かります
ステップアップする
Section titled “ステップアップする”かんたんブロックの画面にある「⬆ ステップアップ」を押すと、同じ bot を、もっと細かく決められるブロック(🧩 ブロック)で開けます。 bot の中身は変わりません。並べて見る「🔀 スプリット」なら、ブロックと Python を同時に見られます。
| 書きかた | 向いている人 |
|---|---|
| 🔰 かんたんブロック | プログラムがはじめて。文字を打ちたくない |
| 🧩 ブロック | Python と同じことをブロックでやりたい |
| 🐍 Python | 文字で書きたい。ブロックにない作戦を使いたい |
| 📄 DNCL | 共通テストの書き方で読みたい(対訳表) |
| 🔀 スプリット | ブロックと Python を並べて、対応を見たい |
Python で書くときに、まず覚えること
Section titled “Python で書くときに、まず覚えること”- bot は
update(state)という関数 1 つです → bot のかたち state(戦車のセンサーが見ている、まわりのようす)から見る → state リファレンス- 4 つの入力を返す → 4 つの入力
- 使える道具 → 組み込みの道具
やりたいことから探すなら、やりたいこと別レシピへ。