マイクラで『複雑な形でブロックを置く』プログラムを作ってみよう
目次
関連記事
少ないプログラムで色々な形を作ろう

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

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

この前は「変数でスイッチを作る」っていうのをやってみたけど、他に面白い使い方はないのだ?
変数とは、「数字や文字などのデータ保存しておける入れ物のこと」です。
保存しているデータは、設定するときに作動させたプログラム以外でも使用できます。
1つの変数に保存できるデータは1つで既に保存されている場合は上書きされますが、変数はいくつも作ることができるので必要な数だけ作りましょう。

そうだねー…。 そしたら今回は「少ないプログラムで複雑な形を作る」練習を3つしてみようか!

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

まずは「その1」の動きを確認しておくね

これは、動作させると「ブロックを1つずつ位置をずらして順番に10個置く」プログラムだよ


これなら簡単に作れそうなのだ! 早速作るのだ!

今回はクリエイティブモードのワールド座標[0,-60,0]をスタート地点にしているから、プログラムを動かすときはそこまで移動しておいてね!
プログラミングをはじめよう
コードを準備しよう

まずはコードを準備しようか。 今回使うのは【チャットコマンド”jump”を入力したとき】【ワールド[0,0,0]】【くりかえし 4 回】【0+0】【変数を1だけ増やす】と変数【x】だよ

変数の追加は、項目の一番上にある「変数の追加」を押すとできるからね!


コードは画面左にある項目のように分かれています。今回必要となるブロックと対応する項目は以下の通りです。
- プレイヤー ⇨ 【チャットコマンド”jump”を入力したとき】
- ブロック ⇨ 【ブロックを[0,0,0]の地点に置く】
- ポジション ⇨ 【ワールド[0,0,0]】
- ループ ⇨ 【くりかえし 4 回】
- 変数 ⇨ 【x】【変数を1だけ増やす】
- 計算 ⇨ 【0+0】

準備ができたからプログラミングを始めるのだ
プログラミングをしよう

まずは動きの条件を作っていくよ。 今回はブロック並べるのを10回繰り返すんだよね

それなら【くりかえし 4 回】を10回に変更すればいいのだね
【くりかえし 4 回】コードは、組み合わせたコードを指定した回数動作させるものです。
【くりかえし】の中に【くりかえし】を組み合わせることもでき、その際内側のプログラムの動作回数は「外側の回数 × 内側の回数」になります。

次はその中身だね。 何を繰り返すんだっけ?

「位置をずらしながらブロックを置いていく」のを繰り返すのだ

そうだったよね。 それじゃあまずは【ブロックを置く】プログラムを【くりかえし】と組み合わせてみよう


これだけだとまだ「自分の足元にブロックを置く」のが10回繰り返されるだけだから、位置をずらすプログラムを作っていくよ

「位置をずらす」ということは「座標を変える」ってことだよね。 今回はそれを【くりかえし】の中でやるんだ

なるほど、そのための変数なのだね

【変数を1だけ増やす】を【くりかえし】の中に組み合わせると毎回変数を増やせそうなのだ
【変数を1だけ増やす】コードは、指定した変数の中身を設定した数だけ増やすものです。
減らしたい場合は数字に「ー(マイナス)」をつけます。
座標の数には「+(プラス)」と「ー(マイナス)」があります。
キャラが動いたときに座標の数字が増えるほうが「+」で減るほうが「ー」です。

大正解! あとはブロックを置く座標を指定するだけだね

今回は[0,-60,0]の座標がスタートだったのだ

そこからx座標の方向にブロックをずらすから、変数【x】と【0+0】を組み合わせてからさらに【ワールド[0,0,0]】に組み合わせるのだ
【0+0】コードは、2つの数を計算するものです。
変数を使った計算をすることもできます。
【ワールド[0,0,0]】コードは、座標の基準設定をワールドにするものです。
ワールド座標を指定しない場合は、自分が立っている場所が基準になります。

y座標を「-60」にしておくのも忘れないでね

これで座標は組み合わさったから、【変数を1だけ増やす】コードを組み合わせて…


最後に、チャットのコマンドを「a」にして、ブロックの種類も「磨かれた安山岩」に変更して完成なのだ

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





完成したら動かしてみよう! 動かすには右下のスタートボタンを押そう。ボタンの色が緑色から赤色になったら準備完了だよ!

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

[0,-60,0]の近くに行ってプログラムを動かしてみるのだ

x座標の+(プラス)方向に向かってブロックが10個置かれたら成功だよ!


大丈夫だったのだ!

これで「その1」は完成だね。 次は「その2」を作っていこう!
ブロックを並べるその2
動きを確認しよう

まずは「その2」の動きを確認しておくね

これは「その1」の動きにさらに上方向の動きを足したものになってるよ!


おぉー! なんだか屋根の片側みたいな形ができたのだ!
プログラミングをはじめよう

今回のプログラムなんだけど、実は「その2」は「その1」をちょっと変えるだけで作れるから、必要な時に準備していくね

形が全然違うのにプログラムはそんなに変わらないのだね!

そうなんだよ! それじゃあプログラミングを始めようていこう!

まずはさっきのプログラムで使った【変数を1だけ増やす】を複製して、y座標を追加しよう

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


y座標用の変数を作ったってことは、【ブロックを[0,0,0]の地点に置く】に組み合わせるのだね!

そのとおり! ただし、クリエイティブモードのワールド座標では足元が「-60」になることに注意だよ!


これで完成!

え?! ほんとに少し違うだけだったのだ



でしょ! それじゃあ動作させるために右下のスタートボタンを押そう。ボタンの色が緑色から赤色になったら準備完了だよ

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

「その1」のプログラムを動かした場所へ行くのだ。 ブロックが残っていたら全部壊しておくのだ

「その1」のプログラムからさらにy座標の+(プラス)方向に向かってブロックが10個置かれたら成功だよ!


大丈夫だったのだ!

これで上下左右へのずらし方がわかったね。 それじゃあ最後はもう少し複雑な形を作ってみよう!
ブロックを並べるその3
動きを確認しよう

まずは「その3」の動きを確認しておくね

これは、動作させると「ブロックを一つ飛ばしで順番に置くのを5繰り返すのを10回繰り返す」プログラムだよ


確かに、ちょっと複雑なのだ…

言葉にすると難しくなるから、形で覚えて一段ずつ作っていこう!
プログラミングをはじめよう
コードを準備しよう

今回は「その2」を複製して使うよ。 それに加えて【くりかえし 4 回】【もし真なら~、でなければ~】【0=0】【変数を0にする】と変数【x】を使うから準備しておいてね

コードは画面左にある項目のように分かれています。今回必要となるブロックと対応する項目は以下の通りです。
- ループ ⇨ 【くりかえし 4 回】
- 論理 ⇨ 【もし真なら~、でなければ~】【0=0】
- 変数 ⇨ 【x】【変数を0にする】

準備ができたからプログラミングを始めるのだ
プログラミングをしよう

まずは動きの条件を作っていくよ。 今回は「ブロックを一つ飛ばしで並べるのを5回繰り返し」てから「開始地点を上と横に1つずらす」のを「10回繰り返す」んだよね

それなら【くりかえし 10 回】の中に【くりかえし 5 回】を組み合わせればできそうなのだ

繰り返すのはブロックを置くプログラムだけど、どうすれば一つ飛ばしにずらしながら置いていけるのだ?

横にずらすときは変数を「1」つずらすんだったよね。 なら、横の横にずらそうと思ったらいくつになるかな?

えーっと…。 あ! 「2」つずらせばいけそうなのだ!

そのとおり! 今回は変数「x」を2つ増やすようにすればオッケーだよ


これで1段分は作れたから、今度はこれを上にずらしながら10段分作るようにしていこう

高さを上にずらすから、変数「y」を1つずつ増やしていけばいいのだね

1段分ができてから上にずらすから、【くりかえし 5 回】の後に【変数を1だけ増やす】を組み合わせないといけないのに注意するのだ!


ここまで出来たら、あとは「開始地点を横にずらす」部分だね

開始地点の場所だけど、「奇数段」は「0」で「偶数段」は「1」になっているよ

それなら、初めはそのまま動かした状態で一段ごとに「1」と「0」でリセットすればいいのだね

【もし真なら~、でなければ~】の条件をどうすればそうなるのだ…?
【もし真なら~、でなければ~】コードは、条件によって動作させるプログラムを分けるものです。
「真」の部分に条件を付けくわえて使用します。

そうだね、まず1段目が終わった時の変数xの中身はいくつになっているかな?

0から「2」つずらすのを「5」回繰り返すから、「2、4、6、8、10」で「10」なのだ!

ばっちりだね。 そしたらその時に開始地点を「1」にすればいいから…?

わかったのだ! 「x = 10」の時に「1」にして、そうじゃないときに「0」にすればいいのだ
【0=0】コードは、左右の値が同じかどうかを判別するものです。
算数と違って結果を示すものではない点に注意しましょう。



これで完成なのだ!



それじゃあプログラムを動かしてみようか! 動かすには右下のスタートボタンを押そう。ボタンの色が緑色から赤色になったら準備完了だよ!

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

[0,-60,0]の近くに行ってプログラムを動かしてみるのだ

網目状みたいな形でブロックが置かれていたら大丈夫だね


大丈夫だったのだ!
さいごに

今回は「少ないプログラムでいろいろな形を作る」プログラムを学んだね

これでおしゃれな家を作れるのだ!

いろんな形を探してみて自分だけの家を作ってみてね!

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

「その1」のブロック設置方向を反対にしてみよう

問題2

「その2」のプログラムを変更して、設置の形が「V」の字になるようにしてみよう!

問題3

「その3」の形を「5 × 10 × 5」の立方体(その3をz方向に5回分追加で動作させる)にしてみよう!

