マインクラフト プログラミング
マイクラミング1回目です。
全6回で簡単な家を建ててみましょう。
基本条件
マインクラフトのワールドはクリエイティブ、フラット
初期スポーン地点の座標は 0.4.0
スクラッチとマインクラフトはコネクト済み
接続用に-1.4.-1にコマンドブロックを設置
マインクラフトからスクラッチに切り替えるときはtキーで表示されるチャットウィンドウの表示にしています。
escは画面が止まるのでプログラム開始の挙動が確認しずらいですし、画面も隠れてしまうというのが理由です。
初回なので簡単なものからはじめます。
まずはブロックの設置をしましょう。
マインクラフトとスクラッチ共にブロックというものがあるので少しわかりずらいですね。
マインクラフト側はブロックの名称またはオブジェクト
スクラッチ側はブロック
というようになるべく気を付けます。
ということでオブジェクトの設置です。
地面に10×10のコンクリートの床を設置しましょう。
使うブロックは変数ブロックが5つと制御ブロックが1つです。
setblockはgetblockになっていてクリックすると変更できます。

これらをつなげて

このように組み合わせ一番上のblockTypeIdのブロックをクリックすると
マインクラフトの 0 4 0 の座標に薄灰色のコンクリートが設置されます。
これがスクラッチ×マインクラフトのプログラミングの第一歩です。
これをX座標、Z座標それぞれ数値(x,z)を
(0,0)(0,1)(0.2)(0,3)…(0,9)(1,0)(1,1)(1,2)…(9,8)(9,9)のように変えながら100回やれば10×10のコンクリートの地面が出来上がります。
15分くらい頑張ればできそうですかね?
だが、しかし、カンのいい人は気が付きます。
面倒だと。
すごく手間がかかると。
プログラミングの特徴の一つに
「楽ができる」
というものがあります。
スクラッチ × マインクラフト でも同様です。
楽をするために使用するブロックは

という同じことを指定回数繰り返す命令です。
これを

と組み合わせて

こうします。
これでコンクリートを10回連続設置できるようになります。
これを実行すると

こうなります。
1個しか設置されません。
でも実はこれ、0.4.0の座標に超高速で10回連続で設置されているのです!
そうなんです、これではまだプログラムは不完全です。
1個設置したら次は隣に設置したいのです。
そこで次のブロックの出番です。

これを組み合わせます。

こうですね。
では実行します。
と、その前に座標は0.0.0にセットしてください。
初期スポーン地点の座標は0.0.0で指定するので注意してください。
スクラッチ × マインクラフト をやり始めたころよく座標でミスをしました。
いや、今でもよくやりますけどね。
プログラミング の動きを確認するために実行していたら目の前に設置されなくて何回もやっていたら実は座標だけ加算されていて、はるか彼方に設置されていたとか・・・
このミスを減らすためにスクラッチのステージに変数の値(ビューワ)を出すようにしています。

これですね。
変数ブロックのチェックをつけておけば画面上に表示されます。
右クリックでスライダーの表示、最小値と最大値の指定ができます。
マイナス指定をする場合のために最小値を変更しておくと後々便利です。
改めて実行した結果は

こうですね。
おーちゃんと設置されましたね。
数を数えるとちゃんと10個設置されています。
いやーできましたね。
おめでとうございます!
ちゃんと0.4.0から10個連続で設置されてい・・・・・・ないじゃないか!
すぐに気が付いたあなたはすごい!

1.4.0から10個設置されている・・・
そう最初の座標がずれているんです。
いやこれも最初は悩みました。
数十分悩みましたね。
あまりにもわからなくて最初の座標を-1してごまかしたりしました。
仕様なのか、最初の設置処理がきちんとできていないようです。
そこで1つブロックを追加しました。

ウェイトタイムを設定しました。
結果は思った通りになりました。
ちゃんと0.4.0から10個設置されました。

ということで追加する場所ですが、さてどこに?

さてさてどれが正解でしょう?
試す際は座標の再セットをお忘れなく!
ここで補足です。
今回はブロックをクリックして実行していますが緑の旗が付いたプログラムのスタート用のブロックを組み合わせて使用しても問題はありません。
それでは正解は・・・
真ん中です!
全部試さないでもすぐに確信が持てた人はすばらしい、おめでとうございます!
さてこれで無事に10個設定できました。
あとはZ座標を変えて10×10に設置すればいいだけです。
1列設置し終わったらX座標を戻す。
1列の設置を10回繰り返す。
ウェイトタイムが1秒だと長く100個の設置に100秒かかるため適度な数値に変更する。
この点に気を付ければ必ずできます。
もしかしたら15分以上かかるかもしれませんがコツをつかめば応用はききます。
これができたら好きなブロックで10×10の壁を設置しましょう。
早ければ1~2分でできると思いますよ。
マインクラフト プログラミング 1回目でした。

こんな壁も簡単にできますね。

コメント