このページで紹介しているのは、ゲーム「Autonauts(オートノーツ)」の「繰り返し」の命令文の増やし方(重ね方/ネスト)と、スクリプト例です。
応用的な利用方法です。
参考にしていただければ幸いです。
スポンサーリンク
■ 「繰り返し:回」の応用
ボットの動作を繰り返させる時に、「繰り返し」という命令文は既によく使っていると思います。
本稿は、その応用編です。
特に「繰り返し:回」の応用について記述しています。
回数を指定する「繰り返し」文は、アイテムクラフトの時に多用すると思います。
繰り返し:4回
木板の保管場所に移動
木板の保管場所から取る
繰り返し:4回
上質な作業台に移動
上質な作業台に追加
何かをクラフトする時、こんな感じのスクリプトを組みますよね。
※厳密には、下記の方がプログラムとしてキレイです(同じ動きをします)。
木板の保管場所に移動
繰り返し:4回
木板の保管場所から取る
上質な作業台に移動
繰り返し:4回
上質な作業台に追加
・もっと必要数が増えたら
ゲームが中盤あたりに差し掛かると、必要となる素材数が増えていきます。
例えば、「木板:8個」とか「木板:6個」とか必要になるパターンです。
この場合、「繰り返し」文を単純に使うと、以下のようなスクリプトになると思います。
繰り返し:4回
木板の保管場所に移動
木板の保管場所から取る
繰り返し:4回
上質な作業台に移動
上質な作業台に追加
繰り返し:4回
木板の保管場所に移動
木板の保管場所から取る
繰り返し:4回
上質な作業台に移動
上質な作業台に追加
まずはこの方法でスクリプトを組むのがオススメです。
これを何度も繰り返し、「もっといい方法はないかな?」と思いつくのが大切です。
さて、しかしながら上のスクリプトでは、ボットの処理能力を超えているときが多いでしょう。
ボットMk2ぐらいの性能だと、コード(スクリプト)があまり書けないのですね。
そのため、スクリプトを短くしないといけません。
勘のいい人は既に気づいたと思いますが、「繰り返し」文は重ねることができます。これをプログラミング用語では「ネスト」と言います。
上のスクリプトは、
「4回木板の追加をしている」
「それを2回繰り返している」
と読み解けます。
そのため、以下のようなスクリプトにできます。
繰り返し:2回
繰り返し:4回
木板の保管場所に移動
木板の保管場所から取る
繰り返し:4回
上質な作業台に移動
上質な作業台に追加
「4回x2周=8」ということで、8個の木板を追加できました。
最初のスクリプトと同じです。
これで一気にスクリプトが短くなりましたね。
5行ぐらい(5バイト)ぐらい短くなった感じでしょうか。
見やすくもなったと思います。
■ 6回や10回をするときは?
ボットMK2あたりが木板を持てる数は4個です。
そうすると、「4回取って追加を2周繰り返す→8回木板を移動できた」
じゃあ、6回や10回入れる時はどうするの?
頭を少しひねれば簡単です。
・6回のとき
繰り返し:2回
繰り返し:3回
木板の保管場所に移動
木板の保管場所から取る
繰り返し:3回
上質な作業台に移動
上質な作業台に追加
「4回」のところを変えます。
これで「3回x2周=6回」追加できました。
・10回のとき
10回の時は、もうちょっと頭をひねります。
繰り返し:5回
繰り返し:2回
木板の保管場所に移動
木板の保管場所から取る
繰り返し:2回
上質な作業台に移動
上質な作業台に追加
ボットMk2は4個しか木板を持てませんから、あえて2回と少なくして、それを5周させます。
これで「2回x5周=10回」追加できました。
なお、ボットの性能が上がれば、「5回x2周=10回」や「10回x1周=10回」とできます。
■ 問題:奇数の時はどうするの?
これで偶数の時は、「繰り返し」文を重ねることでいくらでも対応できますよね。
2回、4回、6回、8回、10回、12回・・・。
ではここで問題です。
5回や9回、11回…といった、奇数の時はどうすればいいのでしょうか?
・基本的なスクリプトで無理やり組めば簡単です。
・「繰り返し」文を重ねて作る場合は、かなり難しいです。
考えて作ってみてくださいね。
ゲームを終盤まで遊べば、後者も作れるようになっているはずです。
■ 同じ動作は「繰り返し」で
全く同じ動作をさせる際には、「繰り返し」を使うのが基本です。
同じ動作を連続して書いてしまうと、途中で間違っていた時に気づけなくなるためです。
木板の保管場所に移動
木板の保管場所から取る
木板の保管場所に移動
木板の保管場所から取る
木板の保管場所に移動
木板の保管場所に追加
木板の保管場所に移動
木板の保管場所から取る
木板の保管場所に移動
木板の保管場所から取る
↑よく見ると、違う動作が含まれています。
間違っているのを見落とすだけでなく、修正するときにも多大な労力が発生します。
繰り返し:5回
木板の保管場所に移動
木板の保管場所から取る
ほら、一気に見やすくなったでしょ?
プログラミングは組んでいると、ある種の固定観念に囚われます。
自分の頭が固いのです。
これを打破できれば、プログラミングの次の段階にステップアップできるようになります。
■ 終わりに
以上、「【Autonauts】繰り返し回数の増やし方(重ね方/ネスト)、スクリプト例【オートノーツ】」でした。
楽しいゲームに出会うための参考としていただければ幸いです。
スポンサーリンク