Scratch2MCPIでMinecraftを動かしてみよう!【 第8回 】ブロックを敷き詰めてみよう!

0
1224

Scratch2MCPIでMinecraftを動かしてみよう!ブロックを敷き詰めてみよう

前回(第7回)で作った巨大建造物?を基にブロックを敷き詰めるプロジェクトを作ってみようと思います。

いつものように、「Minecraft Pi edition」を起動する前に「ファイルマネージャ」を起動して、(第2回で作成した)”flat-world”をコピーし、”flat-world7″という名前のフォルダを作っておいてください。

「Minecraft – Pi edition」を起動して、”flat-world7″を開きます。

「Scratch2MCPI」を起動して、「LXTerminal」画面に『スクラッチと接続しました。』、「Minecraft – Pi edition」画面に『Scratch2MCPI connected to Minecraft Pi.』と表示されるのを確認します。

第7回で作成したプロジェクト”mcpi_try3″を開き、別名”mcpi_try4″をつけて保存しておきます。

プロジェクト”mcpi_try3″の平面図 ↓ を確認しておきましょう。今回は、この内側にブロックを敷き詰める予定です。

①「blockData▼を1ずつ変える」を一番下の「mcpiY▼を1ずつ変える」の下に割り込ませる。

②「mcpiY▼を1ずつ変える」の「mcpiY」を「mcpiX」に変更する。

③「blockData▼を1ずつ変える」の「blockData」を「mcpiZ」に変更する。

④「mcpiY=25まで繰り返す」の「mcpiY」を「mcpiX」に変更する。

⑤「mcpiX=25まで繰り返す」の”25″を”0″に上書きする。

この部分のスクリプトは、X-Z平面の ( -25, -25 ) からX,Zの値を1ずつ増やしながら< X=0 >になるまで繰り返すというもので、平面図で見ると、外周から内側へ順番にブロックを配置するものです。

⑥「mcpiX=25まで繰り返す」の「25」を「() * ()」に変更する。← ” * “は、” × (乗算) “のこと

⑦「() * ()」の左側の「()」に「mcpiZ」を嵌め込む。

⑧「mcpiZ * ()」の「()」に”-1″を入力する。

この部分のスクリプトは、X-Z平面の ( -25, -25 ) からXの値を1ずつ増やしながら< X=Z×-1 >になるまで繰り返すというもので、平面図の上辺に沿って左から右へブロックを配置するものです。

⑨「mcpiZ=25まで繰り返す」の「25」を「mcpiX」に変更する。

この部分のスクリプトは、X-Z平面の ( 25, -25 ) からZの値を1ずつ増やしながら< Z=X >になるまで繰り返すというもので、平面図の右辺に沿って上から下へブロックを配置するものです。

⑩「mcpiX=-25まで繰り返す」の「-25」を「() * ()」に変更する。

⑪「() * ()」の左側の「()」に「mcpiZ」を嵌め込む。

⑫「mcpiZ * ()」の「()」に”-1″を入力する。

この部分のスクリプトは、X-Z平面の ( 25, 25 ) からXの値を1ずつ減らしながら< X=Z×-1 >になるまで繰り返すというもので、平面図の下辺に沿って右から左へブロックを配置するものです。

⑬「mcpiZ=-25まで繰り返す」の「-25」を「mcpiX」に変更する。

この部分のスクリプトは、X-Z平面の ( -25, 25 ) からZの値を1ずつ減らしながら< Z=X >になるまで繰り返すというもので、平面図の左辺に沿って下から上へブロックを配置するものです。

ステージ右上の緑の旗をクリックしてプロジェクトを実行すると、プレーヤーがブロックに埋もれています。プレーヤーをブロックから飛び出させると、ブロックの中央に穴が開いてました。

座標( 0, 1, 0 )にブロックが置かれていないので、「getBlock▼を送る」をスクリプトの最後に置き、「getBlock」を「setBlock」に変更します。

このスクリプトで、もう一度実行すると、無事、中央の穴がブロックで塞がれました。プレーヤーを上昇させると4辺形に敷き詰められたブロックの全体像が確認できます。

プロジェクト名”mcpi_try4″で上書き保存しておきましょう。

因みに、先頭の「blockTypeId▼を45にする」の”45″を”0 ( 空気ブロック )“に上書きして実行すると、敷き詰めたブロックがすべて消えてしまいます。

これを応用すれば、第2回で作成した平坦な大地もできそうですが、実行速度が遅すぎて実用的ではないでしょう。

<<第7回 | 第9回>>