inosyanのブログ

プログラム、家庭菜園、僕が興味を持ったことを書いていきます

【マイクラMakeCode】MakeCodeのチュートリアルを見てみる その2

f:id:inosyan:20180929001747g:plain
(前回のチュートリアルで穴に落ちて出られなくなったキノコ模様の牛達)

前回の続きです。

プログラムブロック

 スクラッチに代表されるビジュアルプログラミング言語では、ジグソーパズルのピースのようなものをブロックと呼びますが、マインクラフトのゲーム内にも「ブロック」があり、それと紛らわしいので、ここでは「プログラムブロック」と呼ぶことにします。スクラッチをやったことがある人には馴染みのある画面ですね。

 スクラッチでは、「緑の旗」という、一番初めに実行するためのプログラムブロックがありましたね。MakeCode(メイクコード)にも同じ働きのブロックはありますが、MakeCodeの場合は、チャットで「checken」と入力されたときや、プレイヤーが歩いた時など、さまざまなきっかけをもとに実行させます。このきっかけのことを「イベント」と呼びます。

 プログラムブロックの上が平らなものがイベントです。イベントがきっかけで開始するので、その上にはまるプログラムブロックは無いからです。

f:id:inosyan:20180929001814g:plain

ChickenRain(チキンレイン)のコード

 チュートリアルの ChickenRainのコードを詳しくみてみましょう。
f:id:inosyan:20180929001828j:plain

①では、チャットコマンドで "chicken" と入力されるのを待っています。逆に言えば、チャットでそれが入力されるまでは何も起きません。他の文字がうたれても何も起きません。"chicken" と打たれた時だけ、この青色のブロックで囲まれている箇所が実行されます。

②では、囲まれた箇所を100回繰り返します。

③は、動物を、プレイヤーの頭上10メートルの箇所に出現させています。座標は、X、Y、Zの順番で、それがプレイヤーからの相対座標なのか、ワールドの絶対座標なのかを指定できます。
f:id:inosyan:20180929001902g:plain

 上記の③の例では、X, Z は0で、Yだけが10なので、プレイヤーの上方向10メートルの位置だということを示しています。

JavaScriptに切り替え

 画面の上にある、{} のボタンを押してみましょう。
f:id:inosyan:20180929001916g:plain

 プログラムブロックがJavaScriptに切り替わりました。プログラム初心者は戸惑うかもしれません。でもよく見ると、プログラムブロックとやっていることは同じです。 f:id:inosyan:20180929001928g:plain

 上記の①にあたるコードがこれです。

player.onChat("chicken", function () {

})

 これは player(プレイヤー) が onChat(チャットコマンド)で "chichen" と入力した時 function(){} のカッコの中を実行する という意味です。function は 関数 という意味で、プログラムの用語ですが、いまはあまり深く考えず、「実行したいものをまとめておく入れ物」くらいに考えておいて問題ないでしょう。

 次に、上記の②にあたるものがこれです。

    for (let i = 0; i < 100; i++) {

    }

 i(アイ) は「変数」と呼ばれるもので、変化する値を入れておく入れ物です。はじめに i を 0にして、それが 100 より小さいあいだ、iを1ずつ増やしていきながら {} の中を実行する という意味です。

 あることを繰り返し行う書き方はいくつかありますが、これは for(フォア)文と呼ばれるものです。変数の i は他の文字列でも良いですが、for文では i が変数としてよく使われます。

 変数の前に書いた let(レット) は、変化する値だということを表すための記号です。他にも const(コンスト) がありますが、const は変化しない値の時に使います。

 i++ の ++ は、i = i + 1 と書くこともできます。この式の意味は、iに1を足したものを再びiとする という意味で、iが一つずつ増えていきます。このことをインクリメントと言います。

 最後に、上記の③にあたるものがこれです。

        mobs.spawn(mobs.animal(AnimalMob.MushroomCow), positions.create(0, 10, 0))

 「mobs(モブ1)を spawn(発生)させよ。種類は AnimalMob.MushroomCow(キノコ模様の牛)、位置はプレイヤーからの相対位置(x:0, y:10, z:0)」
という意味です。

 丸暗記する必要はないですよ。他のプログラム開発用のツールと同じように、MakeCodeにも「コード補完」という便利な機能がついています。文字を途中まで打ったらあとは候補がでてくるのでそこから選ぶだけです。

f:id:inosyan:20180929002013g:plain

 いかがでしょう。英単語が少しわかれば、プログラムなんて簡単な気がしませんか?


  1. mob(モブ)とは、群衆のことを意味する言葉だが、マインクラフトでは動物やモンスターのことを指す