大人気ゲーム「Minecraft」の世界をプログラミングしよう!
「Minecraft」(マインクラフト)の楽しみは何といっても「作る」こと。自分の家やお城、村などを作ることが醍醐味ですが、Minecraftの世界を使ってプログラミング「MakeCode」を学べば、プログラムによって「エージェント」を動かして自分の代わりに作業をさせたり、「闘技場」を作って友達とバトルしたりと、新しい楽しみ方ができます。
必要な準備は、Windows 10版のMinecraftが遊べるパソコンに、ストアから「Code Connection for Minecraft」という開発用アプリをインストールするだけ。小学生にもわかりやすいブロック式のプログラミング環境で、プログラミングを始められます!
プログラミングの準備をしよう
【レッスン1】マインクラフトって、どういうゲーム?
この連載では、Windows 10のMincraftと「Microsoft MakeCode for Minecraft」を使ったプログラミングを学んでいきます。まずは、マインクラフトとは何かをおさらいしましょう。
【レッスン2】「Code Connection」をインストールしよう
MakeCodeを利用するには、Windows 10版のMinecraftと「Code Connection for Minecraft」というアプリが必要です。Microsoft Storeからインストールしましょう。
【レッスン3】プログラミング用のワールドを作ろう
MakeCodeをインストールできたら、Minecraft側でプログラミングの準備をします。。クリエイティブモードでチートを有効にした新しいワールドを設定しましょう。
【レッスン4】Code Connectionを起動してMakeCodeを接続しよう
Code Connectionを起動して、MakeCodeをMinecraftと接続します。ウィンドウを切り替えながら操作しましょう。
【レッスン5】MakeCodeの画面構成と基本操作を知ろう
MakeCodeを利用できるようになったら、基本的な画面の見方と操作方法を確認しましょう。ブロックの組み合わせによってプログラムを作っていきます。
丸石で階段を作ろう
【レッスン6】エージェントを自分の位置に呼ぶプログラムを作ろう
準備が完了し、今回からプログラミングを行います。まずは、さまざまな作業を実行できるキャラクター「エージェント」を自分の位置に呼ぶプログラムを作ります。
【レッスン7】エージェントにアイテムを持たせるには
階段を作るプログラムの準備として、階段の材料になる丸石を渡します。ゲーム内の通常の操作で行います。
【レッスン8】エージェントを前に動かすには
[エージェントを移動させる]ブロックを使ったプログラムでエージェントを動かします。方向と進むブロック数を指定しましょう。
【レッスン9】プログラムのブロックを複製するには
プログラムで同じような動作を作る際には、先に作ったブロックを複製すると効率的です。複製の方法を覚えましょう。
【レッスン10】エージェントに丸石を下に置かせるには
エージェントに[丸石]ブロックを置かせてみましょう。アイテムを置くことで、ゲームの幅がぐっと広がります。
【レッスン11】「丸石を置く」の動きを繰り返すには
ここまでの連載で「丸石を置く」プログラムができました。今回は[ループ]による繰り返し処理で、連続して丸石を置くようにします。
エージェントに掘削させよう
【レッスン12】「移動」と「向き」エージェントの位置を設定する
今回からはエージェントに掘削させるプログラムを作ります。まずはエージェントを移動させる方法と、向きを変える方法を学びましょう。
【レッスン13】エージェントに下を掘らせるには
エージェントに穴を掘らせます。「dig」と入力したら前方を破壊するようにプログラミングしていきます。
【レッスン14】エージェントに階段状の穴を掘らせるには
エージェントに穴を掘らせるプログラムを応用し、階段状の穴を掘らせるようにします。プレイヤーが通れる大きさを考えて作りましょう。
【レッスン15】エージェントにたいまつを置かせるには
エージェントが掘った穴の中でプレイヤーが活動しやすいよう、エージェントにたいまつを置かせましょう。たいまつを置ける場所に注意してください。
【レッスン16】プログラムで変数を使うには
エージェントを指定の回数だけ行動させるなど、ある程度高度なプログラムを作るには「変数」が欠かせません。まずは変数の作り方を覚えましょう。
【レッスン17】変数を使ってたいまつを「4回に一度」設置するには
「階段を掘りたいまつを設置する」プログラムを、「4段に1回たいまつを設置する」に変更しましょう。前回のレッスンで解説した変数を活用します。
効率よくマイニングしよう
【レッスン18】エージェントがブロックを壊す動きを作るには
今回からはエージェントに地下を効率よく採掘させるプログラムを作ります。まずは[動きながら壊す]という新しいブロックを作りましょう。
【レッスン19】繰り返し採掘するには
エージェントが一定の回数坑道を掘り進むごとに向きを変え、さらに掘り進むプログラムを作ります。繰り返しの中にさらに繰り返しを作るのがポイントです。
【レッスン20】壁面にたいまつを置かせるには
掘削した坑道は暗いため、壁面にたいまつを置いてみましょう。変数と条件分岐を使って、効率よく明かりを確保します。
【レッスン21】掘る長さをコマンドで指定するには
今回は「パラメーター」と呼ばれる特殊な変数について学びます。エージェントが掘り進める長さをパラメーターで指定しましょう。
ピラミッドを作ろう
【レッスン22】建物を建てる準備をしよう
今回からはピラミッドを作るプログラムを学びます。まずはプログラムで地面をならして、建物を建てられるようにしましょう。
【レッスン23】ピラミッドの1段目を作るには
ピラミッドの1段目を作ります。ピラミッドの形を指定するには「座標」を使い、プレイヤーのいる場所を中心にブロックを積み上げていきます。
【レッスン24】ピラミッドの2段目を作るには
ピラミッドの2段目を作りましょう。最終形を意識しつつ、規則性を見つけることが大切です。
【レッスン25】ブロックを積み始める高さを自由に設定するには
ここまでのプログラムではピラミッドの段の高さに合わせてブロックを並べる範囲を数値で指定しましたが、これを変数を使った繰り返し処理に書き換えます。まずはブロックの高さを変数にしましょう。
【レッスン26】ピラミッドの長さを自由に設定するには
ピラミッドの一段分の長さを変数に置き換えましょう。変数を使うことで、簡単に自由な長さでピラミッドを作れるようになります。
【レッスン27】ピラミッドを完成させるには
変数を使った繰り返し処理でピラミッドを作ります。高くなるごとにブロックが詰まれる範囲を減らしながら積み上げ、3×3ブロックになったら頂上とします。
養鶏場を作ってタマゴを収穫しよう
【レッスン28】養鶏場を作るには
ここからは、養鶏場でタマゴを回収するプログラムを作ります。まずは柵を並べて養鶏場を作りましょう。
【レッスン29】ニワトリを養鶏場に放すには
養鶏場ができたら、プログラムでニワトリをスポーンさせます。必ず養鶏場の柵を完成させ、逃げられないようにしてから行います。
【レッスン30】ニワトリをランダムな場所に出現させるには
同じ場所に出現できる個体数には上限があるため、ランダムな場所にニワトリを出現させましょう。スポーン用のブロックに組み込んで指定します。
【レッスン31】エージェントの動きを作るには
エージェントにニワトリが生んだタマゴを回収させるため、動き方をプログラミングします。まずは、障害物に当たったら向きを変えるようにします。
【レッスン32】エージェントにランダムな動きを加えるには
エージェントが障害物に当たったときにランダムに方向を変えるようにしましょう。ランダムな動きを加えることで、養鶏場のあちこちを歩けるようになります。
【レッスン33】エージェントにタマゴを回収させるには
エージェントがニワトリのタマゴを回収する動きを作ります。回収させるためのブロックを使いましょう。
【レッスン34】エージェントの動きを止めるには
前回までのプログラムでは、エージェントが永遠にタマゴを集め続けてしまいます。今回は停止させるプログラムを作り、タマゴ集めを終了させます。
畑を作って農作物を育てよう
【レッスン35】農地を作るには
ここからは、農耕を行うめにエージェントに畑を作らせるプログラムを作ります。まずは農地のためのブロックを並べましょう。
【レッスン36】水源を作るには
農耕に必要な水源を作ります。エージェントに穴を掘っておき、渡しておいた水を入れるようにプログラミングします。
【レッスン37】エージェントの位置を決めるには
エージェントが畑を耕すための、最初の位置を指定します。水源の位置を基準に、対角線上に移動させます。
【レッスン38】耕す動作を作るには
エージェントに畑を耕させます。耕したあと、続けて種をまく動作もプログラムします。
【レッスン39】関数で動きをまとめるには
ここまでに作ったプログラムが長くなってきたため、「関数」を使って一定の処理をまとめます。見やすいプログラムを作る基本を学びましょう。
【レッスン40】コマンドに関数を呼び出すには
前回で作成した関数を、ほかのプログラムから呼び出します。[関数]カテゴリーのブロックを使いましょう。
【レッスン41】水源の周り1ブロックを畑にするには
水源の周りに畑を作ってみましょう。二重ループを意識して、エージェントを動かす関数を変更していきます。
【レッスン42】水が届く範囲まで畑にするには
エージェントが畑を耕す範囲を、変数を使って広げます。耕す長さを増やして、広い畑を作りましょう。
友達と対戦バトルも楽しもう
【レッスン43】発光する床を作るには
ここからは、プレイヤー同士が対戦するゲームを作ります。まずは闘技場を作るため、「海のランタン」を地面に敷き詰めましょう。
【レッスン44】闘技場を作るには
プレイヤーの上空に闘技場を作ります。ブロックを並べ、空中に「BATTLE AREA」の文字を描きましょう。
【レッスン45】座標を変数で置き換えるには
闘技場に対戦するプレイヤーをテレポートさせるにあたって、プレイヤーの座標を変数に置き換えてエラーを防ぎます。xyzの座標を変数として設定しましょう。
【レッスン46】ブロックの座標を変数にするには
プレイヤーが移動しても闘技場が移動してしまわないよう、ブロックの座標に変数を使ってワールド座標と組み合わせて表示するようにします。複雑なプログラムのブロックを扱いますが、効率よく作業しましょう。
【レッスん47】プレイヤーを闘技場にテレポートさせるには
対戦ゲームを開始するため、プレイヤーをテレポートさせるプログラムを作ります。コマンド入力後に座標を計算を行う部分がカギとなります。
【レッスン48】ワールドの天候と時間を指定するには
闘技場の設定で、天候と時間が反映されるようにします。日中に対戦を開始し、夕方に終了するようにしましょう。
【レッスン49】参加者の装備を変更するには
対戦バトルをに参加するプレイヤーの装備を統一します。プレイヤーの持ち物をいったん消去し、アイテムを渡すプログラムを作ります。
【レッスン50】ゲームの設定を関数にするには
対戦バトルの設定部分を関数化して、わかりやすいプログラムにしましょう。実行するブロックの接続に注意して作ります。
【レッスン51】マグマをランダムに発生させるには
バトルを盛り上げる要素として、上空から降り注ぐマグマを加えます。ワールド座標を使ってランダムに出現させましょう。、
【レッスン52】ゲームオーバーの設定を作るには
ゲームの終了条件と終了の処理を作っていきます。プレイヤーが死亡した場合と、夕方になった場合に条件分岐を行ってゲームオーバーにします。
【レッスン53】ゲームの終了時にマグマを除去するには
対戦ゲームが終了したときに、闘技場に残ったマグマが消えるようにしましょう。条件を設定して、ゲームオーバー時にマグマを除去する処理を加えます。
【レッスン54】ゲームモードを変更するには
プレイヤー同士が対戦するときは、ゲームモードを変更して互いにダメージを与えられるモードに変更します。「ゲームプレイ」カテゴリーのブロックを使いましょう。
【レッスン55】対戦を可能にするには
プレイヤー同士の対戦を可能にするため、参加プレイヤーを闘技場の上にテレポートさせます。終了後には「PvPモード」を解除します。
【レッスン56】ゲーム終了時の設定を関数でまとめるには
ここまでのレッスンでバトル終了時の設定を行いましたが、これまでの設定を関数にまとめましょう。ここまでのプログラムがすべて完成したら、実際に遊んでみましょう。