連載
» 2016年02月15日 05時00分 UPDATE

マイクラで始めるプログラミング入門(3):プログラミングの「命令」「変数」「繰り返し」「イベント」って何?→初心者でもMinecraftなら理解できる! (1/2)

本連載では、子どもたちに大人気のゲーム「Minecraft」を題材にYouTube実況動画付きで「プログラミング」を学んでいく。今回は、Minecraftのブロックを10段積み上げる/消すサンプルから、プログラミングの「命令」「変数」「繰り返し」「イベント」などを学ぼう。

[薬師寺国安,PROJECT KySS]

MinecraftとScratchでプログラミングの基礎を学ぼう

 本連載「マイクラで始めるプログラミング入門」では、子どもたちに大人気のゲーム「Minecraft(マインクラフト、マイクラ)」を題材にYouTube実況動画付きで「プログラミング」を学んでいく。具体的には、小型PC端末Raspberry Pi(ラズベリーパイ、ラズパイ)上でビジュアルプログラミング環境である「Scratch(スクラッチ)」からMinecraftを操作する方法を解説する。

 前回の「コードを書かずにプログラミングができる、ScratchとScratch2MCPIの基礎知識、インストール方法と簡単な使い方」では、ScratchとScratch2MCPIの概要を紹介し、インストール方法と簡単な使い方を解説した。

 今回からはScratchプログラミングからRaspberry Pi 2のMinecraft Piを操作する方法を解説していく。

 まず今回は、ブロックを10段積み上げるサンプルを作成する(図1)。

図1 Scratch2MCPIとMinecraft Piの連携プログラミングでMinecraft Pi内に10個のブロックを積み上げた

 今回のサンプルでは、プログラミングの「命令」「変数」「繰り返し」「イベント」を学ぶことができる。

 基本的には、プログラミングの「繰り返し」を使って、「ブロックを1段積む」作業を10回繰り返した。また、「ブロックの高さ」「ブロックの種類」という「変数」の値を変えている。さらに、「ブロックを置く」「0.1秒待つ」という「命令」を使っている。

 まずは動画1で手順を確認し、詳細を文章で確認し、自分でもいろいろと変えて試してみてほしい。

10段のブロックを積み上げるプログラミング

 10段のブロックを積み上げる方法をまとめておこう。

  1. 「制御」分類から「『緑色の旗』がクリックされたとき」を配置する
  2. 「変数」分類から、「blockDataを0にする」を3つ配置する
  3. 2.の「blockData」を上から順に「mcpiX」「mcpiY」「mcpiZ」にする
  4. 「変数」分類から、「blockDataを0にする」を配置し、「blockData」を「blockTypeId」にし、「0」のところを、ブロックの種類(表1参照)に対応した数値を指定する
  5. 「制御」分類から「10回繰り返す」を配置する
  6. 5.の「10回繰り返す」内に、
    1. 「制御」分類にある「getHeightを送る」を配置し、「getHeight」を「setBlock」に変える
    2. 「setBlockを送る」の下に「制御」分類の中にある「1秒待つ」を配置し、「1」を「0.1」に変更する
    3. 「変数」分類にある「blockDataを1ずつ変える」を配置し、「blockData」を「mcpiY」にする

 以上の手順で、スクリプトを実行すると、Minecraft Piの世界に10段のブロックが積み上げられたはずだ。

 今回メインで使用するのは、ブロックの位置をx(左右の位置)y(高さの位置)z(前後の位置)座標を指定する「mcpiX」「mcpiY」「mcpiZ」という変数のうち「mcpiY」と、ブロックの種類を指定する「blockTypeId」という変数、そして変数の値を変える命令、指定したブロックを配置する「setBlock」という命令、そしてブロックの配置を「10回繰り返す」命令だ。

 この「命令」を組み合わせて、コンピュータに実行させる行為が「プログラミング」である。英語だと「programming」、つまり「(コンピュータに命令する順序を)計画する」ということだ。

ある「出来事」に対して命令を実行させる「イベント」

 最初に配置した「『緑色の旗』がクリックされたとき」はプログラミングでは、主に「イベント」という。「出来事」という意味だ。

 この、「〜した/されたとき」という「出来事」に対して、下にある命令をコンピュータに実行させる。「イベント」は他にもキーボードの「スペースキーが押されたとき」があり、この「スペースキー」を他の「エンター」などのエンターに変えることができる。

数字を変えられるようにする器「変数」

表1 blockTypeIdに指定する値(Minecraft Piで作れるブロックの種類)
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」の「水」で冷やす必要がある。この辺りのサンプルは動画の中で解説している。

 また動画では、積み上げられるブロックの種類をランダム(不規則)に変更させて、ブロックの塔にいろいろな種類のブロックを表示させている。

 このように不規則な数字のことを「乱数」という。「数字がたくさんのサイコロを振って、出た目の数を使っている」というイメージでよいだろう。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。