このMODは「lua 言語」を使用してタートルをプログラミングして働かせようというMODです。ビルドクラフトのロボット類のようなものを自分でプログラムして動かすようなイメージとなります。他にも周辺機器やアドオン、他MODとの連携など、やりこみ要素が高いMODですが、難易度はかなり上のMODです。
タートルに名前を付けます
名前を付けておかないタートルを壊した時に作成したプログラムが消えてしまいますので、必須項目となります。メールアドレスや住所と電話番号は必要ありません。
名前を付けるコマンド
label set 名前
ここでは「g-g」と名前をつけます
「label set g-g」と入力してエンター
名前を付けたタートルは、アイテム化して再設置したとしても作成したプログラムは消えません。
プログラムの作成と呼び出し
プログラムの作成と呼び出しのコマンド
edit プログラム名
作成したプログラム「A.lua」を実行します
「edit A」と入力してエンター
※「.lua」は拡張子なので入力の必要はありません
表示されたプログラム
文字化けは日本語の部分です
「--日本語の説明--」のように前後「--」の部分は、プログラムとして認識されません。
スロット1に燃料(溶岩バケツ)
残りのスロットに建材をスタックで入れます
燃料効率
原木:15
木材:15
石炭:80
木炭:80
石炭ブロック:800
溶岩バケツ:1000
タートルの移動は、1ブロック分で1の燃料を消費します
タートルのスロットが圧迫するので溶岩バケツが最強です
「Ctrl」コントロールキーを押します
矢印キーで「Run」に移動してエンターでプログラムを実行します
Save:プログラムのセーブ
Run:プログラムの実行
Exit:このプログラム画面から戻ります
外側からブロックを敷き詰めていきます
10x12のブロックの設置が完了しました
処理の内容がわかりやすくなるように色分けをしていますが、丸石や木材の1種類での設置も可能です
プログラムの内容
プログラム名「A」
--#####コンフィグ#####--
--縦と横の値を入力--
--デフォルト TATE:10、YOKO:12--
local TATE=10
local YOKO=12
--#####関数、縦の動き#####--
function TATEHEN()
--前に進んで下にブロックを設置--
for A=1,TATE do
turtle.forward()
turtle.placeDown()
end
--右向きに成功したら TATE を「-1」カウント--
if turtle.turnRight() then
TATE=TATE-1
end
--戻り値、TATE に「-1」を反映させる--
return TATE
end
--#####関数、横の動き#####--
function YOKOHEN()
--前に進んで下にブロックを設置--
for B=1,YOKO-1 do
turtle.forward()
turtle.placeDown()
end
--右向きに成功したら YOKO を「-1」カウント--
if turtle.turnRight() then
YOKO=YOKO-1
end
--戻り値、YOKO に「-1」カウントを反映させる--
return YOKO
end
--#####メイン処理#####--
--スロット1から燃料補給--
turtle.select(1)
turtle.refuel()
--タートル上昇--
turtle.up()
--DODAI は1回の処理で2辺作成--
for DODAI=1,20 do
--スロット2から1度の処理毎にスロットを変更--
turtle.select(DODAI+1)
TATEHEN()
YOKOHEN()
end
プログラムの難しさ
赤文字は任意に設定できる文字や数字です、プログラム作成時には、大文字で設定しています。プログラム初心者のわたしは、設定されているプログラム用語なのか?自分で設定する文字なのか?この判別が原因で「?」の2乗となり全く理解できませんでした。それがクリアできたことで想像力が働くようになりました。
プログラムの注意事項
「半角スペース」「,」「.」「end」など決まり事は守ります
先頭にスペースを入れなくても機能します(インデントなし)
行が空いても機能します
「--」を文字の前に入れれば認識されません
専門知識はありませんので自信がありません
このプログラムで使用したデフォルトの文字と書式
タートルに関するデフォルトの関数
タートルの前進
turtle.forward()
タートルが下にブロックを設置
turtle.placeDown()
タートルが右を向く
turtle.turnRight()
アイテムスロットの選択
turtle.select()
タートルの燃料補給
turtle.refuel()
タートルが上に上がる
turtle.up()
コンピュータークラフト(lua 言語)の書式
コンフィグ、変数の設定
local 名称=数字
関数、処理をまとめて定義
function 名称()
実行内容
return 戻り値(必要ない場合もあり)
end
ループカウンターで繰り返し処理
for 名称=初期値,上限値 do
実行内容
end
分岐、条件文、真の場合
if 条件 then
実行内容
end
地面にブロックを敷き詰めるプログラムの解説
図形で考えるとプログラムを行いやすくなります
縦は、1~10(10ブロック)
for A=1,TATE do
横は、11~22(11ブロック)
for B=1,YOKO-1 do -1ブロックから始めます
2回目の処理
縦は、23~31(9ブロック)
横は、32~41(10ブロック)
3回目の処理
縦は、42~49(8ブロック)
横は。50~58(9ブロック)
4回目の処理
縦は、59~65(7ブロック)
横は、66~73(8ブロック)
5回目以降省略します
2回目以降、縦、横ともに設置する1ブロックずつ減っていきます、そこで「if 文」でタートルが右を向いたら変数のTATEとYOKOが、「-1」になるように定義しました
local TATE=10
local YOKO=12
「local」は、変数の記号のようなもので任意に設定できます、数学のXやYと考えたら理解できると思います、デフォルトで縦に10ブロック、横に12ブロックの広さです
function TATEHEN()
for A=1,TATE do
turtle.forward()
turtle.placeDown()
end
if turtle.turnRight() then
TATE=TATE-1
end
return TATE
end
「function」で、TATEHEN()と関数を設定して縦の動きを決めます
「for」で、Aは前に進んで下にブロックを置く作業を「1~TATE回まで」実行します
「if~then」もし曲がり角で右に曲がれたら、「TATEを-1」とします
「return」で戻り値の「TATE」を返すことで「-1」が反映します
function YOKOHEN()
for B=1,YOKO-1 do
turtle.forward()
turtle.placeDown()
end
if turtle.turnRight() then
YOKO=YOKO-1
end
return YOKO
end
「function」で、TATEHEN()と関数を設定して横の動きを決めます
「for」で、Aは前に進んで下にブロックを置く作業を「1~YOKO-1回まで」実行します
「if~then」で、真の値をもし曲がり角で右に曲がれたら、「YOKOを-1」とします
「return」で、戻り値の「TATE」を返すことで「-1」が反映します
turtle.select(1)
turtle.refuel()
turtle.select(1)で、スロット1を選択して溶岩バケツを燃料として補充
turtle.up()
下にブロックを置いていくのでまず上昇します
for DODAI=1,20 do
turtle.select(DODAI+1)
TATEHEN()
YOKOHEN()
end
メイン処理は、DODAIと名前を付けて1~20回繰り返します、大きめな設定にしています、スロット1は、溶岩バケツが入っているので、スロット2からブロックを使用していきます、DODAIを実行する回数でスロットが2、3、4・・・と数字が上がっていくことで、アイテムの不足を解消しています
このプログラムの問題点は終わりがグダグダで最後のタートルの位置がいまいち特定できない。アイテムの使い方が雑って感じです。初心者なので大目に見てください。
ただタートルが可愛くなってしまったのが事実です。タートルのことが頭から離れない、これは恋かも・・・あ~眠れない。
0 件のコメント:
コメントを投稿