1.16.5日本語化リソースパック配布

302個のMODの翻訳が完了したので YouTube にて配布いたします 。翻訳の内容など不備はありますが、無いよりはましだと思って使ってください。翻訳したMODの詳細については、まとめるのが面倒くさいので止めておきます。このリソースパックを導入することがマイクラMOD攻略の近道...

2019年6月21日金曜日

渦巻き状にブロックを敷き詰める

プログラム経験のない初心者が、どれだけのことができるかをやっていきたいと思います。床や天井にブロックを設置することを想定してプログラムしてみました。ただブロックを敷き詰めるだけなら簡単なんですが、コンフィグから縦と横のサイズをそれぞれ設定できるプログラムとなっています。

この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回目の処理
縦は、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 件のコメント:

コメントを投稿

関連コンテンツ