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

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

2023年1月16日月曜日

コンピュータークラフトでプログラム18 露天掘り編12

岩盤を発見したら定義文字に数字を加えてプログラム終了の合図を作る。おまけでランダムに岩盤を設置するプログラムです。

岩盤をランダムに設置するプログラム

8x8のサイズに一段目は岩盤を敷き詰め、二段目はランダムに岩盤を設置する


※訂正
動画では2行目が
    AIZU=1
となっていましたが
    local AIZU=1
が正解です(間違えてました)

関数ランダムプレイスダウンを作りランダムにスロットを選ぶ
関数はファンクション␣名前()
    function RANDOM_placeDown()

SLOTには1から6までの数値がランダムに入るように定義
    local SLOT=math.randam(1,6)

タートルは定義文字のSLOTを選択スロットとするようにする
    turtle.select(SLOT)

下に岩盤を設置する
    turtle.placeDown()

関数の終わり
    end

一段目と二段目で岩盤の設置方法を変更する
もしもループYOKOが8以下なら
    if YOKO<=8 then

岩盤を設置
    turtle.placeDown()

違うなら
    else

ランダムに岩盤を設置
    RANDOM_placeDown()

もしもの終わり
    end

タートルのスロット1,2,3,4に岩盤を入れてスタート、一段目はスロット1の岩盤を64ブロック敷き詰める、二段目の設置は1から6までのスロットをランダムに選ぶ

タートルの動きのプログラムは露天掘りとほぼ同じで上に行くか下に行くかの違いだけ
タートルが上に行くAPI
    turtle.up()

その他の部分は露天掘りプログラムを参照してください



本編の露天掘りプログラム

岩盤を調べながら前に行く関数
岩盤カウント=0を定義
    local GANBANcount=0
この定義文字に岩盤を見つけたら1ずつ加えていく

関数を作る
岩盤を調べながら前に行く関数
    function GANBAN_forward()

前に行く
    turtle.forward()

ARUとKUWASIKUを定義して下のブロックを調べたことを代入させる
    local ARU,KUWASIKU=turtle.inspectDown()

これで戻りが以下のように代入される
    ARU=trueもしくはfalse
    KUWASIKU=内部データ

ARUにはブロックがあるのかないのか
KUWASIKUにはブロックの内部データとなる

もしもでKUWASIKUの内部データの名前の部分が岩盤なら
    if KUWASIKU.name=="minecraft:bedrock" then

定義文字に1を加える
    GANBANcount=GANBANcount+1

岩盤を見つけたら画面に表示する(これは動画用なのでなくてもよい)
    print(GANBANcount)

もしもの終わり
    end

関数の終わり
    end


岩盤を調べながら下に行く関数
上と同じ考え方である

岩盤を見つけたら画面に表示する(これは動画用なのでなくてもよい)
    print("Donmai!")


本編の露天掘りプログラムを関数に書き換える
turtle.forward() ⇒ GANBAN_forward()
turtle.down() ⇒ GANBAN_down()


これでタートルが前に行く、もしくは下に行くという移動する動作の後で全てのブロックを調べることができます。正直言って岩盤の発見率は高いので、ここまでする必要はないかもしれません。あとプログラムの処理スピードを考えると掘る深さによって下を調べる調べないの判断をするってのもありかもしれませんね。


このページの動画です
応援してね


コンピュータークラフトでプログラム17 露天掘り編

チェストを設置するプログラム

基本となる1列にチェストを設置するプログラム
1段上に行く
turtle.up()

縦にチェストを設置するプログラム
下に設置する
turtle.placeDown()
ループカウンターAは1から3回まで実行
前に行くを2回
turtle.forward()
turtle.forward()
下に設置する
turtle.placeDown()
ループカウンターの終わり

基本的な動きは露天掘りと同じだがチェスト設置のルールでタートルフォワードが2回となっている、チェスト設置のタートルプレイスダウンが4回なので4個のチェストを設置する


左回りに列を移動
左を向く
turtle.turnLeft()
前に行く
turtle.forward()
左を向く
turtle.turnLeft()

これも露天掘りと同じ動きになる


折り返してチェストを設置して戻ってくる動き
基本となる縦にチェストを設置するプログラムをコピペする


右回りに列を移動する
右を向く
turtle.turnRight()
前に行くが2回
turtle.forward()
turtle.forward()
右を向く
turtle.turnRight()

これもチェスト設置のルールでタートルフォワードが2回となっている


プログラム全体をループさせる
ループカウンターBを1から4回まで実行
for B=1,4 do
最後に
end
で締めくくる

このまま動かすとタートルはチェスト設置場所からはみ出してしまう


ループBの4回目に右回りに列を移動させない
もしもループカウンターBが4より小さいときに右回りに列を移動
if B<4 then
    turtle.turnRight()
    turtle.forward()
    turtle.forward()
    turtle.turnRight()
end

1,2,3回目の処理では右回りに列を移動して4回目の処理で右回りに列を移動しなくなる


ループBの4回目に右回りに列を移動しないで元の位置に戻る
もしもループカウンターBが4回目になった時
else
ループBが1,2,3ではない時の意味になる
左を向く
turtle.turnLeft()
ループカウンターCは1から10回まで実行
for C=1,10 do
前に行く
turtle.forward()
ループカウンターCの終わり
end
右を向く
turtle.turnRight()
前に行く
turtle.forward()
下に行く
turle.down()
もしもループBが4回目になった時の終わり
end


1列にラージチェストを設置するプログラム


ラージチェストを積み上げるプログラム

このサイトの動画です
応援してね

2022年11月10日木曜日

コンピュータークラフトでプログラム16 露天掘り編

 チェストで止まってアイテムを入れるプログラム
ループAGARUは100回繰り返されることが判明
for AGARU=1,100 do

チェストで止まった後もループAGARUは処理されてしまう


画面に表示させてミスを確認する
チェストに止まった後の処理を表示
elseif KUWASIKU.nama=="minecraft:chest" then

チェストであるなら

「CHEST」とプリントする
print("CHEST")

ループAGARUの処理回数をプリントする
print(AGARU)


ブロックでタートルが上に行くのを止める
チェストで止まることができないので100上がり100下がるプログラム


ループを強制終了
チェストでないなら上に上がる
~="minecraft:chest" then
turtle.up()
チェストであるなら
elseif
ループAGARUの強制終了
break

これでタイムラグなく処理ができる


関数CHEST1()に当てはめる


露天掘りプログラム内に関数CHEST1()を当てはめる


関数CHEST2()を作る
今後チェストを増やしていく必要があるのでそのための試作プログラム


このページの動画です
応援してね

2022年11月4日金曜日

コンピュータークラフトでプログラム15 露天掘り編

前回のパートで作ったお遊びプログラム
戻り値をlocalで定義した文字に代入してprintでタートルの画面に表示させるプログラムとなっている


タートルの画面
ARU=Arimasu
KUWASIKU.name=Chest
KUWASIKU.metadata=Ecup

このように戻り値を指定した文字で表示させているが実際の戻り値はこうなる

ARU=true
KUWASIKU.name="minecraft:chest"
KUWASIKU.metadata=5


チェストで止まるプログラム
ループAGARUは1から100まで実行
for AGARU=1,100 do

localでARUとKUWASIKUの文字を定義してタートルインスペクトの戻り値を代入する
local ARU,KUWASIKU=turtle.inspect()

ARUには
false or true
が入る

KUWASIKUには
state
facing
name
metadata
これらすべてが入る

もしもKUWASIKU内のアイテム名を比べる
if KUWASIKU.name~="minecraft:chest" then

戻り値であるアイテム名が
name
がチェスト
"minecraft:chest"
でないなら
~=
上に行く
turtle.up()

チェストならば何もしない、すなわち上に行かない


上がった分だけ下がる(間違え)
ループSAGARUは1からループAGARUの処理回数まで実行
for SAGARU=1,AGARU do

ループAGARUは7行目のendで終わっているのでAGARUという文字には数字が入らないので12行目から始まるループSAGARUの終わり値であるAGARUは無効となる


ループSAGARUの終わり値に数字を入れてみる
これでタートルは2ブロック下に下がったのでAGARUという文字は使えないことの証明になる


タートルが上がった回数をカウントしそれを利用して下がる
UPcount=0を定義する
local UPcount=0

タートルが上に行った後にUPcountに1加える
turtle.up()
UPcount=UPcount+1

注:
UPcount=+1
これではダメ

ループSAGARUの終わり値をUPcountにする
for SAGARU=1,UPcount do


このページの動画です
応援してね

2022年10月28日金曜日

コンピュータークラフトでプログラム14 露天掘り編

関数
function 名前()
    プログラム
end

チェストに戻ってアイテムを入れて露天掘りに戻る部分を関数化


関数化するとこうなる
露天掘りのプログラムの前に
function CHEST1()
    チェストに戻るプログラムをカットして貼り付け
end

これで関数CHEST1が完成

関数CHEST1()を露天掘りプログラムに組み込む
チェストに戻るプログラムの位置に組み込む
elseif (YOKO==YOKOconfig*2) then
    CHEST1()


関数を作った一番の利点はチェストに戻る部分と基本プログラムを分けて考えることができることです

と言いたいんですが

本心はプログラムが縦に長いと動画やサイトの画面に収まらずに説明しにくい


チェストに戻る関数部分


基本動作の露天掘り部分
露天掘り部分がすっきりして読みやすくなる

ほんとはもっと説明書きをしたいんですが、できるだけ行を少なくしたい


これで動くと思ったんですが、動かない、原因は
タートルが上下に動く終わり値をループHUKASAの処理回数にしていること
for AGARU=1,HUKASA*2-1 do
    turtle.up()

for SAGARU=1,HUKASA*2-1 do
    turtle.down()

--露天掘りプログラム
for HUKASA=1,HUKASAconfig/2 do

露天掘り部分のループカウンターの処理は関数内では反映されない


ループHUKASAの中に関数CHEST1()を組み込む
for HUKASA=1,HUKASAconfig/2 do
function CHEST1()

これで正常に動く

これでは関数を作った意味がない


タートルがチェストで自動で止まるようにする
タートルが前を調べるAPI
turtle.inspect()

戻り値の
true/false
name
これを利用する

使い方
local ARU,KUWASIKU=turtle.inspect()
ARUとKUWASIKUを定義して
turtle.inspect()の戻り値を代入する
ARUにtrue/falseを代入
KUWASIKUに詳細データを代入させる


このページの動画です
応援してね

2022年10月27日木曜日

コンピュータークラフトでプログラム13 露天掘り編

プログラムの修正(勘違い)
動画の説明は完全に間違っていました、実は後で作ったプログラムとごちゃ混ぜになっていた、動画制作とプログラムを組むことの難しさを痛感!
大変申し訳ありません。

変更点は

変更前

変更後
回れ右をループSAGARUのendの後にして
turtle.turnRight()
turtle.turnRight()

ループSAGARUの終わり値をループAGARUの終わり値と同じにし、上がった分だけ下がるようにして
HUKASA*2-1

下に行くを付け加えました
turtle.down()


さらに2か所を変更

変更前

変更後

タートルが回れ右をして下に行くを
turtle.turnRight()
turtle.turnRight()
turtle.down()

下に行って回れ右に変更
turtle.turnRight()
turtle.turnRight()
turtle.down()


修正後のプログラム
このようにした意味は下のようにしたかったから


チェストの戻ってアイテムを入れて露天掘りに戻る部分


チェストに戻って~を抜いても露天掘りができる
これは後々チェストに戻って~を関数化するためです


ただ動けばいいとの考えでプログラムを組んでも面白くないんです
改良や修正を加えて育てていくのがプログラムだと思っています


チェストに戻るタイミングを考える

これも前回と同じくループYOKO1回の処理後になる、2段を掘り終えたタイミングでチェストに戻るかどうかの判断をするようにする

ループHUKASAの回数で管理する
コンフィグと係数を作る、初期値は6、係数はコンフィグと同数


コンフィグをプログラムに反映させる
チェストに戻るタイミングの分岐
if HUKASA==MODORUconfig then
コンフィグ値は6なのでループHUKASAの6回目の処理でチェストに戻る


コンフィグ値に係数を加える
MODORUconfig=MODORUconfig+MODORUkeisuu
コンフィグ値6に係数の6を加える

これでMODORUconfigには
6+6=12
12+6=18
18+6=24
24+6=30
と6の倍数が入ることになる
そうすればループHUKASAの処理回数に対応できる


タートルのスロットの埋まり具合で管理する
スロットを調べるAPIを使う
turtle.getItemCount()
チェストに戻るタイミングの分岐で使うとこうなる
if turtle.getItemCount(12)~=0 then

(12)
がタートルのスロットNO
~=0
で0ではないとき
スロット12にひとつでもアイテムが入っていればチェストに戻ることになる


指定するスロットを可変式にする
12~15くらいが妥当


コンフィグ値の反映
if turtle.getItemCount(SLOTconfig)~=0 then


このページの動画です
応援してね


関連コンテンツ