Crab.scan()

From 8x9craft
Jump to: navigation, search

crab.scan()の意味とは?

crab.scan()というプログラムの「crab」ははっくん、「scan()」とは、周りにあるブロックを調べるという意味です。

crab.inspect()との違いは、inspectは、1ブロックしか調べませんが、
scanは、はっくんの前とその左右、前後、斜め左前、右前、左後、右後についても調べてくれます。

返却値について

scanの返却値は BlockStateの配列です。
let blocks = crab.scan()とした場合、調べた結果が下記のような番号の場所にセットされます。

※配列とは、変数をたくさん入れることができる番号付きのロッカーのようなものです。
※この番号は、プログラム用語では「添え字(そえじ)、インデックス」と言います。

0:左前のブロックの情報 1:前のブロックの情報 2:右前のブロックの情報
3:左のブロックの情報 4:真ん中のブロックの情報 5:右のブロックの情報
6:左後のブロックの情報 7:後のブロックの情報 8:右後のブロックの情報
  • はっくんの眼の前のブロックの情報を使いたい場合は、blocks[1] というように指定します。
  • はっくんの左のブロックの情報を使いたい場合は、blocks[3] というように指定します。
  • はっくんの右のブロックの情報を使いたい場合は、blocks[5] というように指定します。

はっくんの1つ上や、1つ下の周辺を調べたいとき

  • 上記のようにcrab.scan()は、はっくんが居る高さの周辺を調べます。
  • crab.scanUp()とすれば、はっくんが居る場所の1つ上の周辺を調べます。
  • crab.scanDown()とすれば、はっくんが居る場所の1つ下の周辺を調べます。

つまり、blocks[4]は、scan()のときは、はっくんそのもの。scanUp()の場合は、はっくんの真上。scanDown()は、はっくんの真下、ということですね。

使用例

// はっくんの下の周辺を調べます。
let blocks = crab.scanDown()

// もし 前方下がコンクリート、かつ、黒だったら、進めます!と言います
if (blocks[1].id == 251 && blocks[1].mata == 15) {
    crab.say("前に進めます!")
}
else {
    crab.say("進めません!")
}

Navigation menu

Internal error

Jump to: navigation, search
[a144a994f48a485a5795d716] 2024-03-28 11:19:46: Fatal exception of type "Error"

Navigation menu