百億のマインクラフトと千億のタートル

つまり、マイクラワールド1つあたりタートルが10匹生息しているわけですね。

タートルプログラミングの基本: ブロックを設置しよう

はじめに

前回の記事で、

  • ターミナル画面上でコマンドを入力してタートルに命令できること。
  • ターミナル画面上でeditコマンドを使うことでプログラムを書けること
  • 作ったプログラムをターミナル画面上で実行できること

を学びました。

今回は実際に役立つ仕事をタートルにやらせるプログラムを作りましょう。

ブロックを設置するプログラムが欲しい

マイクラ世界で何をやりたいかと言えば、まずは建築でしょう。 普通は手作業で一つずつブロックを設置していくわけですが、タートルに建築の一部を任せることができます。たとえば、 高いところから落ちるとダメージを受けて死んでしまいます。ですから、床にブロックを敷き詰めることはとても重要です。

f:id:hevohevo:20190918123609p:plain
高所注意

高所作業はSHIFTキー使えば安全に行えるとはいえ、なかなか心臓に悪いものですよね。空中を自在に移動できるタートルに任せられるなら、それが何よりです。

タートルはブロックを設置できる

タートルは原則として、自分の正面・真上・真下の3方向に対してしか行動できません。自分の真横や真後ろに何かしたいならその方向を向かなくてはなりません。

まずは自分の正面にブロックを設置するプログラムを作りましょう。

プログラム名は、「setchi」(せっち)にしましょうか。

次のコマンドをターミナル画面で打ち込みましょう。

> edit setchi

エディタが動きますので、その中でLuaプログラムを以下のように書きましょう。

turtle.place()

1行だけなので簡単ですね。 turtleの直後に続けて「.」(半角ピリオド)なので正確に書き写しましょう。 placeの直後の「()」括弧も、前括弧を書いたら後括弧で閉じます。片方だけではダメです。

なおすでにお気づきかもしれませんが、CCエディタでプログラムを書く時、これから入力するであろう内容が予想され、以下のようにその候補が表示されます。

f:id:hevohevo:20190918185705p:plain
「tu」の2文字入力した時点で候補が表示されている

その候補で問題なければTabキーを押してその候補を選択しましょう。このような自動補完機能を駆使することで長いプログラムを比較的簡単に入力できます。(詳しい解説はココをクリック)

今回のturtle.place()という例で言うならば、全部で14文字あるので本来ならば合計14回のキーを押さなくてはなりません。しかし補完機能を使うならば合計6回のキー入力で完成します。

上の画像では「tu」の2文字まで入力したので、以降の操作を画像を使って順に説明しましょう。

上図の状態からTabキーを押した(3入力目)のが以下の画像です。

f:id:hevohevo:20190918190333p:plain
「t」「u」「Tabキー」の結果(3入力後)/figcaption>

上図の状態ではplace.attack(という謎の関数が予測表示されていますがこれではないので、無視して、次の文字「p」を入力します。

f:id:hevohevo:20190918190914p:plain
「t」「u」「Tabキー」「p」の結果(4入力後)

上図のように、正しい候補が出ていますね。問題ないので次はTabキーで予測候補を選択しましょう。

f:id:hevohevo:20190918191617p:plain
「t」「u」「Tabキー」「p」「Tabキー」の結果(5入力後)

いいですね!最後は、後ろ側の括弧を補いましょう。

f:id:hevohevo:20190918191758p:plain
「t」「u」「Tabキー」「p」「Tabキー」「)」の結果(6入力で完成)

このように、表示されている予測を選びたければTabキーを押す。予測が違っていたら素直にキーを入力していくという流れです。

このように自動補完機能は便利なので使いこなしましょう。

書き終わったら、CTRLキーで下メニューを呼び出し、「Save」「Exit」でエディタを 終了してターミナル画面に戻ります。

まだ終わりではありませんよ。

タートルのインベントリに設置するブロックを与えなくてはなりません。 好きなブロックをタートルインベントリ中の選択スロット1に入れましょう。

1個だけでなく、ちょっと多めに渡しておきましょう。

f:id:hevohevo:20190918193647p:plain
ブロックを渡す

ここまで準備できたらプログラムの実行です。以下のコマンドを入力します。

> setchi

どうですか? ブロックを設置できましたか?

f:id:hevohevo:20190918193809p:plain
ブロックを正面に設置

ちなみに書き間違えがあると次のようなエラーメッセージが表示されます。 再度、修正しましょう。

f:id:hevohevo:20190918192306p:plain
エラーメッセージ

タートルは3方向それぞれにブロックを設置できる

この記事の前の方で、タートルは正面・真上・真下の3方向にブロックを設置できると説明しました。そのようなプログラムを書いてみましょう。

ただその前に、タートルを地面の上に直接置いている場合は真下に地面があるのですからブロックを置きようがありません。goコマンドを使ってタートルを空中に浮かせましょう。(やり方はここをクリック)

以前の記事で詳しく解説したので、やり方を忘れた人はこちらのページをチェック。

hevo2.hatenablog.com

つまり今回は、次のコマンドを打ち込めばいいですね。

> go up

タートルを空中に浮かせられたら準備完了。プログラム修正に入ります。

f:id:hevohevo:20190918193944p:plain
空中に1歩浮いたタートル

例によってeditコマンドで先ほどのファイル「setchi」を開き、プログラムを次のように修正します。

turtle.place()
turtle.placeDown()
turtle.placeUp()

f:id:hevohevo:20190918194129p:plain
3方向にブロックを設置するプログラム

さきほどの1行に、2行目と3行目を付け加えたプログラムです。 とても似ていますね。

書き写す時の注意点として、「Down()」と「Up()」の先頭文字は大文字であることです。Luaプログラムでは、入力した文字の大文字・小文字は区別されるので間違えないように。

それぞれの手順は、次のことを意味しています。

関数 機能
turtle.place() 正面に選択スロットのプロックを設置する
turtle.placeDown() 真下に選択スロットのブロックを設置する
turtle.placeUp() 真上に選択スロットのブロックを設置する

つまりこのプログラムは、「正面にブロック設置して、真下にブロックを設置して、真上にブロックを設置しなさい」という手順をタートルに指示しています。

問題なく書けたら「Save」「Edit」して、ターミナル画面でこのプログラムを実行しましょう。

> setchi

どうでしょうか。うまく3方向にブロックを設置できましたか?

f:id:hevohevo:20190918194247p:plain
正面・真上・真下にブロック設置

できたら今回は終了です。次回はこの基本を押さえたうえでより実践的なブロック設置プログラムを作ります。


  1. タートルインベントリで少しだけ太い枠で強調されているスロットがあるはずです。大抵の場合は一番左上のスロットです。