マイクラで『変数を使って建築する』プログラムを作ってみよう
目次
関連記事
変数を使ってブロックを置くプログラムを作る

やっほー 春日部つむぎだよ

なのなのだ ずんだもんなのだ

これまで、『マイクラで『座標を変数として保存』してみよう』で変数の基本を、『マイクラで『変数を使ってブロックを置く』プログラムを作ってみよう!』でブロックの置き方を学んだのだ。
変数とは、「数字や文字などのデータ保存しておける入れ物のこと」です。
保存しているデータは、設定するときに作動させたプログラム以外でも使用できます。
1つの変数に保存できるデータは1つで既に保存されている場合は上書きされますが、変数はいくつも作ることができるので必要な数だけ作りましょう。

変数にもかなり慣れてきたのだ。 そろそろ建築をしてみたいのだ。

いいね! それなら、今回は「変数を使って建築する」のを目標にしようか!

使うのは『マインクラフト』と『メイクコード』の2つだよ! みんなも準備しておこう!
- 『MineCraft(マインクラフト)』はMicrosoftが提供しているサンドボックスゲームです。プレイヤーはブロックを積み上げて建物を作り上げたり、広い世界を冒険してモンスターと戦うことができます。メイクコードを使ってプログラミングをするためには統合版が必要です。
- 『MakeCode(メイクコード)』はMicrosoftが提供するオープンソースのプログラミング学習プラットフォームです。ブロックを使ったビジュアルコーディングとJavaScriptによるテキストコーディングの2種類のエディタを切り替えながら、プログラミングできます。
目印を置こう
基準の場所

まずは基準となる場所に目印をつけておこう。 今回は足元に《ガラス》ブロックを置いておこう。

この基準の場所を変数に保存して建築していくんだ

基準の場所は決まっているのだ?

プログラムを作りやすくするために基準を決めているだけだから、どこでも大丈夫だよ!

それなら、今立っている場所にしておくのだ。

建築の開始場所

次は建築を始める場所を決めるね。

建築を始める場所なのだ?

そうだよ。 変数を使った基準の位置をそのまま使うと、その場所から建築が始まっちゃうんだ。

そうすると自分のキャラクターが埋まっちゃったりして使いづらくなるから、「自分の場所の2ブロック前から作る」みたいにしておくんだ。

そのための目印なのだね。 それなら、今回は4ブロック前から作り出すようにするのだ。

x座標の+(プラス)方向4つ分前に目印をおくのだ
「+(プラス)」と「-(マイナス)」を計算する時は引き算で、「-(マイナス)」と「-(マイナス)」の計算は足し算になります。
例1:「+100」と「-200」の場合、「100-200=-100」
例2:「-100」と「+200」の場合、「200-100=100」
例3:「-100」と「-200」の場合、「-(100+200)=-300」


建築範囲の目印は《赤のステンドグラス》にしておこうか
建築の範囲

あとは家の大きさを決めるのだ

入り口を《ガラス》を置いた方向にするとしたら、さっき置いた開始位置から奥にするほど部屋の奥行きが大きくなりそうだね

そしたら、開始位置から7ブロック分進んだ場所に目印をおくのだ

基準位置から数えたら11ブロック先ってことだね


それじゃあ次は横幅を決めようか

横幅はz座標の方向を見ればいいのだ。

こっちは+方向に10ブロック分くらいにしておくのだ


これで縦の長さと横の長さが決まったから、あとは高さなんだけど…

実は今回のプログラムなら高さ用の目印は必要ないから、高さだけ決めておこう!

高さ用の目印は置くのが面倒だったから嬉しいのだ! 高さは+5ブロック分にするのだ!

これで目印が全部置けたから、プログラミングを始めるのだ
プログラミングをはじめよう
変数プログラムを作ろう

まずは変数を使って自分の位置座標を保存するプログラムを作るのだ!

そうだね! ただ、ここで説明すると少し長くなりそうだから、『マイクラで『座標を変数として保存』してみよう』の記事を参考にして作って来てね!

それができたら建築プログラムを作っていこう!
コードを準備しよう〜建築編〜

今回使うコードは【ブロックを並べる】【ワールド[0,0,0]】【0+0】と【x】の変数だよ

コードは画面左にある項目のように分かれています。今回必要となるブロックと対応する項目は以下の通りです。
- ブロック ⇨ 【ブロックを並べる】
- ポジション ⇨ 【ワールド[0,0,0]】
- 計算 ⇨ 【0+0】
- 変数 ⇨ 【x】

準備が出来たら、【x】と【0+0】を組み合わせよう


【0+0】コードは、指定した数を計算するコードです。
このコードを複数組み合わせればいくつも計算できるほか、変数の計算をすることもできます。

今作ったプログラムは、ある二つの数を計算するプログラムなんだ。 実際にどう使うかは後で説明するね

組み合わせられたら、そのプログラムを複製してy座標とz座標の分も準備しよう

複製はコードを右クリックして出てきたメニューからできるのだ



変数の変更は変数名の場所を押すとできるよ




xyzの三種類の変数を使った計算プログラムができたのだ

ここまでできたら、このプログラムの説明をしておくね。

この変数を計算しているプログラムなんだけど、変数だけじゃなくて【0+0】と組み合わせて使うことで結果を簡単に変更することができるようになるんだよね

例えば、座標保存を使ったブロック設置プログラムを動作させるとして、保存した変数をそのまま使うとどこにブロックが置かれるかわかる?

キャラクターの座標は立っている足元の場所を示しているから、足がある場所に置かれるのだ


その通り! それじゃあ、そのプログラムを使ってブロックを置く場所を胴体部分、つまり高さを1つ高くするとしたらどうしたらいいかな?

えーっと、今胴体がある部分を足元にしないといけないから…

1つブロックを置いてその上に乗ったりして足を1ブロック分高くしてから保存しないといけないのだ


そうなんだよ! でも、変更したい高さが1じゃなくて100とかだったら大変だよね

そういうときに変数計算ができるプログラムで「y+100」ってすると、「足元の座標から100高い場所」を示すことができるんだ!

なるほどなのだ! つまり、今いる座標に足したり引いたりした数だけ場所をずらすことができるのだね!

そういうこと! ずらすときには座標の+(プラス)とー(マイナス)の方向に気を付けてね!

それじゃあ計算プログラムの仕組みもわかったと思うから、その3つのプログラムを【ワールド[0,0,0]】と組み合わせよう
【ワールド[0,0,0]】コードは、座標の指定をワールド座標基準にするものです。
ワールド座標にしていしない場合は自分の位置が基準になるので注意しましょう。

組み合わせる場所に気を付けないといけないのだ

座標の表記は[x,y,z]の順番になっているのだったね


組み合わせられたら、そのプログラムを複製して【ブロックを並べる】コードの座標部分2箇所に組み合わせてね

2箇所に組み合わせるってことは、複製の数は1つだね

【ブロックを並べる】コードは、指定した座標の範囲にブロックを並べるコードです。

これで家の外側を作るプログラムの準備ができたよ。 同じように家の内側を作るからこのコードを複製しておこう


複製が出来たら並べるブロックの種類を変更しよう。 家の内側は《空気》ブロックで、外側は好きなブロックにしてね

わかったのだ。 それなら《樺の木材》にするのだ

ブロックの種類変更はブロックのアイコンを押すとできるのだ



変更出来たら、初めに作った変数プログラムと組み合わせていくね。

まずは変数保存プログラムの下に家の外側プログラムを組み合わせて、その下に内側プログラムを組み合わせてね

【ブロックを並べる】コードは指定した範囲すべてにブロックを並べます。
そのため、家を建築する場合は「家の外側作成」→「内側を《空気》ブロック化」の順にプログラミングする必要があります。

プログラムは上から動作するから順番はとても大切なのだね!

順番が違うと作りたいものと違うものができちゃうかもしれないからね

ここまでできたら、残りは座標の指定だね!
建築プログラムを作ろう

まずは、今回ブロックを置く予定の場所を再確認しておこうか

リストにまとめておくのだ
- 開始地点:基準からx座標4ブロック分前
- 家の奥行:開始地点からx座標7ブロック分前(基準からx座標11ブロック分前)
- 家の横幅:開始地点からz座標10ブロック分
- 家の高さ:開始地点からy座標5ブロック分。 ただし床作成のため足元の1ブロック分下から

まずは家の外側の「範囲の始まり」を順番に設定していくね。 x座標計算プログラムに「4」を足そう



これで開始地点が基準から4つ前になったんだ

y座標も同じようにずらすのだ。 足元の一つ下から始めるから「ー1」を足すのだ


z座標の開始地点は基準から動かさなくていいから、そのままで大丈夫だよ

これで「範囲の始まり」は大丈夫だから、次は「範囲の終わり」だけど…

あ! ここでさっきのリストの数字が使えそうなのだ!

そうだね! じゃあ入力していってみようか

x座標は開始地点から7ブロック前だから、「4+7=11」なのだ


y座標は5ブロック分でz座標は10ブロック分だったから、それぞれ「5」と「10」を足すのだ


これで家の外側は完成だね!

次は内側をつくるのだ!

まずは内側の範囲を考えてみようか。 「内側を空気化する」っていうことは、「外側すべてに1ブロック分だけ残す」ってことだよね

そうだね

つまり「外側のすべての範囲を、家の内側に向けてに1つずらす」ってことなんだよ

少しややこしいよね。 でもこれを簡単に考える方法があって、まずは外側の範囲の計算部分を座標ごとに並べるんだ

っていうことは、y座標だと「ー1」と「5」だから「ー1 0 1 2 3 4 5」って感じなのだ?

その通りだよ。 そしてこれのすべての方向から1つ分内側にずらすから、両端の数字の隣が内側範囲の始まりと終わりになっているんだ!




ってことは始まりが「0」で終わりが「4」ってことなのだね!


バッチリだね! それじゃあほかの座標も同じように座標を見ていこう

x座標は「4 5 6 ・・・ 9 10 11」だから、「5」と「10」だね


z座標は「0 1 2 ・・・ 8 9 10」だから、「1」と「9」だね


これでプログラムが完成したよ!

それなら動かしてみるのだ!

間違えても大丈夫だから落ち着いてやってね。入力ができたら右下のスタートボタンを押そう。ボタンの色が緑色から赤色になったら準備完了だよ

動かす前にはプログラムが合っているか確認しておくのだ!
動作確認!

目印の上で『マイクラ』のチャットで「run」を送信するのだ


《赤のステンドグラス》を置いた範囲に家ができたら成功だよ!



大丈夫だったのだ!

せっかくだから、このまま内装も作ってもう少し練習してみようか
本棚を置いてみよう

今回は壁際に本棚を置くプログラムを作ってみようか

まずは目印を置いてみるのだ。 基準位置側の角に「高さ3、奥行4」で作ってみようと思うのだ



【ブロックを並べる】プログラムを複製して、座標を入力していこう。

ちなみに、複製したプログラムの座標を一度全部「0」に戻しておくとわかりやすくなると思うよ!


まずはx座標なのだ。始まりの範囲は家の開始地点の一つ奥からだから「5」で終わりはそこから4ブロック分なのだ。

数えるときには始まりの範囲も数えるから、「5 6 7 8」なのだ。 終わりの範囲は「8」なのだ


同じように、y座標は始まりが「0」で終わりが「2」だね


最後のz座標は基準の一つ隣の列だけだから、始まりも終わりも「1」なのだ


ここまでできたら、ブロックの種類を《本棚》にしてプログラムを組み合わせよう



動かしてみよう!

チャットで「run」を送信するのだ

家の建築と本棚の設置ができていたら成功だよ!



本棚が置けているのだ!
さいごに

今回は「変数を使って建築する」プログラムが作れたね

僕も自分の家を作ってみたのだ!



すごい! 物もたくさん置けてるし、もう変数を使った建築はばっちりみたいだね!

みんなも変数を練習して、大きな家を作ってみてほしいのだ!

最後に練習問題を用意してみたから、よかったら挑戦してみてね!
プログラムを変更してみよう!
問題1

今回作った家の大きさを「x方向に4」「y方向に1」「z方向に5」ブロック分大きくしてみよう!

問題2

問題1で作った家を「x方向に5」「y方向に2」「z方向に7」ブロック分小さくしてみよう!

問題3

変数を使って入り口を作ってみよう! 入り口はどの建築プログラムで作ってもOKだよ!
