本連載「マイクラで始めるプログラミング入門」では、子どもたちに大人気のゲーム「Minecraft(マインクラフト、マイクラ)」を題材にYouTube実況動画付きで「プログラミング」を学んでいく。具体的には、小型PC端末Raspberry Pi(ラズベリーパイ、ラズパイ)上でビジュアルプログラミング環境である「Scratch(スクラッチ)」からMinecraftを操作する方法を解説する。
前回の「コードを書かずにプログラミングができる、ScratchとScratch2MCPIの基礎知識、インストール方法と簡単な使い方」では、ScratchとScratch2MCPIの概要を紹介し、インストール方法と簡単な使い方を解説した。
今回からはScratchプログラミングからRaspberry Pi 2のMinecraft Piを操作する方法を解説していく。
まず今回は、ブロックを10段積み上げるサンプルを作成する(図1)。
今回のサンプルでは、プログラミングの「命令」「変数」「繰り返し」「イベント」を学ぶことができる。
基本的には、プログラミングの「繰り返し」を使って、「ブロックを1段積む」作業を10回繰り返した。また、「ブロックの高さ」「ブロックの種類」という「変数」の値を変えている。さらに、「ブロックを置く」「0.1秒待つ」という「命令」を使っている。
まずは動画1で手順を確認し、詳細を文章で確認し、自分でもいろいろと変えて試してみてほしい。
10段のブロックを積み上げる方法をまとめておこう。
以上の手順で、スクリプトを実行すると、Minecraft Piの世界に10段のブロックが積み上げられたはずだ。
今回メインで使用するのは、ブロックの位置をx(左右の位置)y(高さの位置)z(前後の位置)座標を指定する「mcpiX」「mcpiY」「mcpiZ」という変数のうち「mcpiY」と、ブロックの種類を指定する「blockTypeId」という変数、そして変数の値を変える命令、指定したブロックを配置する「setBlock」という命令、そしてブロックの配置を「10回繰り返す」命令だ。
この「命令」を組み合わせて、コンピュータに実行させる行為が「プログラミング」である。英語だと「programming」、つまり「(コンピュータに命令する順序を)計画する」ということだ。
最初に配置した「『緑色の旗』がクリックされたとき」はプログラミングでは、主に「イベント」という。「出来事」という意味だ。
この、「〜した/されたとき」という「出来事」に対して、下にある命令をコンピュータに実行させる。「イベント」は他にもキーボードの「スペースキーが押されたとき」があり、この「スペースキー」を他の「エンター」などのエンターに変えることができる。
| blockTypeId | ブロックの種類 | 
|---|---|
| 0 | 空気 | 
| 1 | 石 | 
| 2 | 草 | 
| 3 | 土 | 
| 4 | 丸石 | 
| 5 | 木材 | 
| 6 | 苗木 | 
| 7 | 岩盤 | 
| 8 | 水 | 
| 9 | 静止した水 | 
| 10 | 溶岩 | 
| 11 | 静止した溶岩 | 
| 12 | 砂 | 
| 13 | 砂利 | 
| 14 | 金鉱石 | 
| 15 | 鉄鉱石 | 
| 16 | 石炭鉱石 | 
| 17 | 原木 | 
| 18 | 葉 | 
| 20 | ガラス | 
| 21 | ラピスラズリ鉱石 | 
| 22 | ラピスラズリブロック | 
| 24 | 砂岩 | 
| 26 | ベッド | 
| 30 | 蜘蛛の巣 | 
| 31 | 草 | 
| 35 | 羊毛 | 
| 37 | 黄色の花 | 
| 38 | バラ | 
| 39 | キノコ(茶) | 
| 40 | キノコ(赤) | 
| 41 | 金ブロック | 
| 42 | 鉄ブロック | 
| 43 | 重ねたストーンスラブ | 
| 44 | ストーンスラブ | 
| 45 | れんがブロック | 
| 46 | TNT | 
| 47 | 本棚 | 
| 48 | 苔石 | 
| 49 | 黒曜石 | 
| 50 | たいまつ | 
| 51 | 炎 | 
| 53 | 樫の木の階段 | 
| 54 | チェスト | 
| 56 | ダイヤモンド鉱石 | 
| 57 | ダイヤモンドブロック | 
| 58 | 作業台 | 
| 60 | 耕地 | 
| 61 | かまど | 
| 62 | 燃えているかまど | 
| 64 | 木のドア | 
| 65 | はしご | 
| 67 | 丸石の階段 | 
| 71 | 鉄のドア | 
| 73 | レッドストーン鉱石 | 
| 78 | 雪 | 
| 79 | 氷 | 
| 80 | 雪のブロック | 
| 81 | サボテン | 
| 82 | 粘土ブロック | 
| 83 | サトウキビ | 
| 85 | フェンス | 
| 89 | グローストーンブロック | 
| 95 | 鍵のかかったチェスト | 
| 98 | 石れんが | 
| 102 | 板ガラス | 
| 103 | メロン | 
| 107 | フェンスゲート | 
| 246 | 輝く黒曜石 | 
| 247 | ネザーリアクターコア | 
| 参考:<Stuff about="code" />: Minecraft API | |
「mcpiX」「mcpiY」「mcpiZ」「blockTypeId」はプログラミングで「変数」という。「変数」とは、プログラムの実行中に変化する値を格納するための器のようなものだ。手順6の3では、「mcpiY」(ブロックの高さ)を1ずつ増やす命令で数字が変わっていく。
また、積み上げるブロックの種類を、数値を変えることで、いろいろなブロックに変えることができる。blockTypeIdに表1で示した数値を指定すると、いろいろな種類のブロックを積み上げることができる。
表1の番号が連続した数字になっていないのは、Minecraft Piでは使用できないものがあるからだ。
気を付けねばならないのは「10」「11」の「溶岩」を指定した場合だ。これらはブロックが積み上がらずに「溶岩」として流れ出てしまう。そうなると視界が真っ赤になってしまうので、「8」の「水」で冷やす必要がある。この辺りのサンプルは動画の中で解説している。
また動画では、積み上げられるブロックの種類をランダム(不規則)に変更させて、ブロックの塔にいろいろな種類のブロックを表示させている。
このように不規則な数字のことを「乱数」という。「数字がたくさんのサイコロを振って、出た目の数を使っている」というイメージでよいだろう。
Copyright© 2016 ITmedia, Inc. All Rights Reserved.