マイクラプログラム-MakeCode-「ワールド座標で整地をする」

今回はマイクラでプログラムをやってみます!

 

自分の現在で整地を行っています!

JavaScriptsのコード,ブロックコード?は下にあります

 

  •  実行動画

streamable.com

 

  • 今回のやったこと!!

  1. getPosition()で現在の位置を取得を取得します.
  2. ここから,自分が動いても初めにいた場所で整地が開始されます
  3. for文で,fillを繰り返し処理することでブロックのところをairブロックに変えていきます
  4. またこの時にワールド座標にすることで,動いても処理される場所に影響しないようにしています.
  5. for文を繰り返す中で,床に特定のブロックを敷き詰めるようにしています.

*岩盤よりも下を処理しないように,現在のY座標からdeleteHeghtを比較しています.もし,岩盤以下を処理する場合はdeleteHeightを変更するようにしています.

deleteHeght :整地する高さ

deleteRange:整地する幅

 

  • JavaScripts Code

player.onChat("clear", function () {
player.say("現在の位置を取得:動かないで!!")
getPosition()
player.say("動いてもいいよ~~")
player.say("整地スタート")
// 岩盤より下に掘らないようにする
if (playerY - deleteHeight <= 0) {
player.say("このままだと岩盤より深く掘ることになるので,整地する高さを変更します!")
deleteHeight = deleteHeight - playerY + 2
}
for(let v = deleteRange; v >= -deleteRange;v--){
for(let w = deleteRange;w >= -deleteRange;w--){
//床の第一引数のものを敷き詰める
blocks.fill(
Block.GoldBlock,
positions.createWorld(
playerX + (w * 100),
playerY - deleteHeight-1,
playerZ + (v * 100)
),
positions.createWorld(
playerX + (w + 1) * 100,
playerY - deleteHeight-1,
playerZ + (v + 1)*100
)
)
for(let h = deleteHeight;h > -deleteHeight;h--){
blocks.fill(
Block.Air,
positions.createWorld(
playerX + (w * 100),
playerY + h,
playerZ + (v * 100)
),
positions.createWorld(
playerX + ((w + 1) * 100),
playerY + h - 1,
playerZ + ((v + 1) * 100)
)
)
}
player.say("finish remove one area")

}
}
player.say("整地終了")
})
// 自分の現在の位置を取得
function getPosition () {
// getValueは配列指定 0 -> x,1 -> y...
playerX = player.position().getValue(0)
playerY = player.position().getValue(1)
playerZ = player.position().getValue(2)
player.say("player position:(" +
playerX.toString() + "," +
playerY.toString() + "," +
playerZ.toString() + ")")
}
let deleteHeight = 0
let playerZ = 0
let playerY = 0
let playerX = 0
let deleteRange = 0
deleteHeight = 35

 

  • ブロックコード

f:id:ka1357amnbpdr:20191111213009p:plain