この記事ではマインクラフトとコードコネクションを用いて、プログラミングによってブランチマイニング場まで掘る方法を紹介します。マインクラフトでプログラミングができるようになる環境構築については過去記事を参考にしてください。
チュートリアルのSuper Diggerを応用した内容になります。こちらを先にやっておくと理解が深まるでしょう。
本当はSuper Diggerのようにプレイヤーの動きに合わせて作る予定だったのですが、重すぎてマインクラフトが落ちることが多発したので方針転換します。
やりたいこととしてはほぼ同じです。
コードコネクションを開き、新しいプロジェクトを作ります。適当に名前を付けましょう。私はsuper_digger_plus
という名前にしました。
コードと実行例
実行例は以下の通りになります。地上からブランチマイニング場(y=11)まで続く道を作ります。
外側は丸石に覆われているので、砂利などが落ちてきて道がふさがることもありません。
入り口は丸石になっているので、壊して入ります。
シーランタンで明かりを取っています。
コードは以下のようになっています。
コードを見やすくする(リファクタリング)
上のコードはかなり長くて、全体を見通すのが厳しいですね。やっていることは大きく以下の3つになります。
- 丸石を配置する。
- 中を空気にする。
- シーランタンをおいて明るくする。
上記の処理がわかりやすいように、関数にまとめます。高度なブロックから関数を選んで作成しましょう。
位置を使用するので、パラメータを追加するのところでPosition
を選んでおきます。丸石配置処理を例えばstone
という関数名にします。
その中にそれぞれの処理を詰めていきます。
関数は複製することができるので、これを利用して後2つ同じように作成します。
出来上がりは以下の図のようになります。メインの処理はチャットコマンドを入力したときのところに書いてあります。3ステップあることが一目でわかり、それぞれの処理が追いやすくなったと思います。
このコードを眺めていると、stone
関数とair
関数はほとんど同じであることがわかります。これらもまとめてしまいましょう。
関数の違っているところは置くブロックの種類と、置く範囲の始点終点です。それらを入力できる引数を追加します。関数を右クリックし、関数の編集を選び、数値を3つ追加しましょう。それぞれの名前をblock
、start
、end
とします。関数の名前もfill_to_quarry
(採掘場まで埋める)という風にしておきました。
関数の引数に対応する部分を変更します。例えば丸石をblock
変数に、範囲の始まりの値をstart
変数に、範囲の終わりの値をend
変数にします。
完成したプログラムは以下の図の通りです。せっかくなので、丸石をウールに変えて試してみましょう。
残念なことに、ウールにすると途中にある溶岩に焼かれて道が壊れてしまいます。これに対応するために、ウールの周りをさらに丸石で囲います。関数化したことによってこういった変更が容易になります。
いい感じになりましたが、まだまだ問題があります。
外枠が厚くなった影響でブランチマイニングの高さまで1足りていません。関数内では高さ9までで終わっているので、工夫の余地があります。
また、そのままではシーランタンの位置もあいません。上の例ではプログラムを変更して位置を合わせましたが、これも変数化して勝手にやってくれたら楽になります。
実際に業務などでチーム開発を行う場合は、コードを見やすく・使いやすくしておくことが重要です。上記で述べたようなリファクタリングを適切にしていく必要があります。
一人で使う場合も自分の使いやすいようにコードを整えることは大事です。一生懸命コードを書いても、寝て起きたらその使い方とかパラメータの意味とか忘れていることが多いです。