倉庫のロボット3(変数と手順)
自作ミニ言語 3 段階の 完成形。ことばに 変数(set n = 2)と 手順(to carry { … })が入りました。ロボットに命令を書いて、荷物を棚まで運ばせるゲームです。短く書けるほど星が増えます。
-
-
ロボット(目のある方が正面) 荷物 棚(ここへ置く) 置き終わった荷物 壁
やること:ロボットに命令を書いて、荷物を棚まで運ぶ。全部の棚に置けたら終わりです。
今回は
今回は
set(変数)と to(手順に名前を付ける)が使えます。
書いた文が少ないほど星が増えます(★★★ が目標)。
- ▶ 走らせる を押すと、下のお手本どおりに動きます。まずこれを見てください。
- 1 コマ で 1 命令ずつ。
carry をよんだのように、手順の出入りも出ます。 - もどす で最初から。次の面 で別の倉庫へ。
使えることば(一覧)
| move 3 | 3 マス前へ。壁や荷物にぶつかったら止まる |
| left / right | その場で 90 度回る |
| pick | 目の前の荷物を持つ(手はひとつ) |
| drop | 目の前に置く。棚の上なら運び終わり |
| wait 2 | 2 コマ何もしない |
| # メモ | 行末までメモ(動きには関係しない) |
| repeat 4 { … } | 中身を 4 回 |
| if 条件 { … } else { … } | 条件を見て、どちらかを 1 回(else は省ける) |
| while 条件 { … } | 条件が本当のあいだ、ずっと |
| front is wall | 目の前が壁か。ほかに free(通れる)/ crate(荷物)/ shelf(棚) |
| holding | 荷物を持っているか |
| not / and / or | 条件をつなぐ(強さは not > and > or) |
| set n = 2 | 変数に入れる。move n のように使える |
| to carry { … } | 手順に名前を付ける(呼ばれるまで動かない) |
| carry | 付けた名前で呼ぶ。自分を呼べば再帰 |
| 2 + 3 * 4 | 式。* / の方が + - より強い |
| n > 0 | 数を比べる条件(ほかに < =) |
▶ が今の行です
構文木(書いたものが、どんな形に読まれたか)
Python を読み込んでいます… (初回は数秒かかります)
このページは Python のコードがブラウザの中でそのまま動いています(PyScript)。 面の表も、標的の割れ方も、得点の内訳も、キーを受ける obey() も CLI 版と 1 文字も違いません。