ジオラマ作り

ジオラマ作り

「ジオラマ」とは日本語で「情景模型」とも言われ、展示物をその背景や周辺環境と一緒に展示する方法です。鉄道模型やプラモデルの展示でよく使われます 。

S2AR で、家と自動車と電車の「ジオラマ」を作ってみましょう。

地面(グラウンド)

図2-5-1

最初に地面から作っていきます。ジオラマの縮尺は「1 : 100」です。つまりマインクラフトと同じで、ブロック1つが「1 メートル角の立方体」に設定します。

地面の色は緑(r, g, b)=(0, 255, 0)にします。サイズ「100 x 100 x 1」の立方体ブロックを1つ置きます(100 メートル角の空き地)。Y座標を「-1」に設定することで、地面の高さを「0」に合わせることができます。
プログラムを見やすくするためにサブルーチンにしておきます。サブルーチン名は「ground」にしました。

図2-5-2

図2-5-2がメインルーチンです。サブルーチン「ground」を呼び出します。プログラムを実行するには、Scratch のステージ上の「緑の旗」をクリックしてください(このブロックを直接クリックすることでも実行可能です)。

図2-5-3

パソコンデスクの左奥側に「原点」を置いて、プログラムを実行した結果です。「100 メートル角の空き地」がクラフトできました。

道路

図2-5-4

自動車用の道路をクラフトします。変数 s2arX, s2arY, s2arZ をあらかじめ作っておきましょう。
道路の色はグレー(r, g, b)=(140, 140, 140)にします。道路の幅は9メートルにしたいので、奥行を「9」に設定し、直方体ブロックを1つ設置します。
本物の道路らしくするために「中央線」を設置します。幅を「5」奥行を「1」に設定します。 X 座標を「10」ずつ増やしながら10回繰り返すことで、「中央線」を10本設置できます。

サブルーチン名は「road」にしました。

図2-5-5

サブルーチン「road」を呼び出すためにメインルーチンを改造します。「[road」 を送って待つ」をつなげます。

図2-5-6

メインルーチンを実行することで、道路をクラフトできました。目的通り、10本の「中央線」を引くことができました。本物の道路らしくなりました。

線路

以下は書籍でご確認ください

自動車を作る

自動車を作る

空間に「3Dモデル」を描いてみましょう。今回は比較的簡単な「自動車」をクラフトします。「自動車」を選んだ理由は、すべてのパーツ(parts)を直方体で作ることができるからです。RGB 値と16進数

を参照に、自分の好きな色の自動車を作ってみましょう。

早速始めましょう!

設計図

図2-4-1

プログラミングの前に、自動車の設計図を描きます。エクセルのセルを正方形にしてから、作りたい車の形をイメージしてセルに色を付けていきます。

ここで重要なのは、クラフトするための「原点(Origin)」をどこにするかということです。今回はクラフトしやすいように、車の右前を「X-Z平面」の原点に決めました。Y軸については、地面から「2」上がったところに車をクラフトするように決めました。

車体の作成

図2-4-2

図2-4-2が車体のみの設計図です。下2段は「シアン(r, g, b)=(0, 255, 255)」で上7段は「青(r, g, b)=(0, 0, 255)」でクラフトします。RGB 値と16進数を見て、自分の好きな色に変更可能です。

図2-4-3

図2-4-3を参照に車体のプログラムを作成して下さい。設計図をよく見て、一段ずつ車体を作っていきます。

図2-4-3a

例えば、車体の1番下の段は、(x, y, z)=(1, 3, 0) を起点として、(w, d, h)=(23, 10, 1)の直方体で構成されています。よって「直方体ブロック」の設定値を図2-4-3の赤枠、緑枠の通りに入力してください。

同様に、2段目から9段目まで「直方体ブロック」の値を決めていきます。完成した図2-4-3のプログラムを実行してみましょう。

図2-4-4

実行結果です。ツートンカラーの車体がクラフトできました。

タイヤの作成

図2-4-5

次にタイヤを作成します。

図2-4-6

タイヤは外側にゴムの部分を黒(r, g, b)=(0, 0, 0)で、内側の金属の部分を白(r, g, b)=(255, 255, 255)で作成します。

図2-4-7

タイヤをうまくクラフトできました。

電装類の作成

図2-4-8

サイドミラー、ライト、方向指示器、フロントパネル、ナンバープレートをまとめて作成してしまいましょう。

図2-4-9

設計図より色と位置、サイズを決めて、直方体ブロックを設置していきます。

図2-4-10

かなり自動車らしくなっていました。後はウインドウを付ければ完成です。一段ずつ作成していきます。

ウインドウの作成

図2-4-11

ウインドウの1段目の設計図です。

図2-4-12

4つの直方体でウインドウを作成します。

図2-4-13

ウインドウの1段目ができました。

図2-4-14

ウインドウの2段目の設計図です。

図2-4-15

2段目を設置するプログラムです。

図2-4-16

完成に近づいてきました。あともう少し。

図2-4-17

自動車の完成図です。

図2-4-18

最後にウインドウの3段目を設置します。

図2-4-19

自動車が完成しました。角度を変えて、上下左右から覗き込んで、細部がうまくクラフトできているか確認して下さい。

プログラムの改造

自動車を作るプログラムが完成しましたが、このプログラムは問題点がいくつかあります。

①自動車を作る位置を簡単に変更できない。
②自動車の大きさを変更できない。
③自動車の向きを変更できない。

これらの問題を解決するため、プログラムを改造します。Scratch の「リスト」という仕組みを利用して、プログラムを書き換えます。

データのリスト化

図2-4-20

図2-4-20は、先ほど作成した「車体作成」プログラムです。「車体(下)」のデータとしてリスト化したい部分を赤丸で囲みました。データの数は15個あります。

図2-4-21

リスト「lower_body(= 車体の下側)」を新しく作成して、「車体作成」プログラムの赤丸のデータを追加していきます。長さが 15(3 + 6 x 2)のリストができました。

図2-4-22

図2-4-22がリスト「lower_body」を読み取って、ブロックを置くプログラムです。

変数 s2arX, s2arY, s2arZ, x0, y0, z0, timesX, tmesY, timesZ, w, d, h, i を作成します。

s2arX は「s2ar の座標系の X座標」を表す変数です。
s2arY は「s2ar の座標系の Y座標」を表す変数です。
s2arZ は「s2ar の座標系の Z座標」を表す変数です。
x0, y0, z0 は「モデリングの原点」を表す変数で、この点を基準にモデルを作成していきます。
timesXは「X方向の拡大倍率」です。
timesYは「Y方向の拡大倍率」です。
timesZは「Z方向の拡大倍率」です。
w は「横幅(= width)」を表す変数です。
d は「奥行き(= depth)」を表す変数です。
h は「高さ(= height)」を表す変数です。
i は「カウンター変数」です。

リスト「lower_body」の1番、2番、3番は色のデータなので、「色指定ブロック」に代入します。4番から9番の数値が、車体の一番下のデータ、10番から15番が2段目のデータになります。これらのデータを「直方体ブロック」に代入するように「繰り返し処理」を使ってプログラミングします。

timesX は X方向の拡大倍率を表す変数です。初期値「1」を増やしてやることで、X方向に拡大できます。timesY, timesZ はそれぞれ Y方向、Z方向の拡大倍率を表します。

図2-4-23

プログラムの実行結果です。目的通りに「車体(下)」の部分が作成されました。

このまま作業を続けていくと、プログラムが縦に長くなりすぎてしまい、プログラミングが読みにくくなります。そこで「サブルーチン」という仕組みを使って、プログラムを読みやすくしてみましょう。

サブルーチン化

「サブルーチン」とはプログラムの中に繰り返し現れる部分を切り離して、プログラムの可読性や保守性をよくするための仕組みです 。サブルーチンは、「メインルーチン」から呼び出されて実行されます 。

実際に「車体(下)作成プログラム」をサブルーチン化しましょう。改造方法は簡単です。

図2-4-24

まずプログラムのサブルーチンにしたい部分を切り離します。図2-4-24を参照に。「[ i ] を [ 0 ] にする」ブロックから下を切り離します。
次に、カテゴリー「イベント」の中にある「[ メッセージ1 ] を受け取ったとき」ブロックを頭に乗せてやります。最後に、名前「メッセージ1」をサブルーチンの名前「parts1」に変更して、サブルーチンは完成です。

コラム メッセージの名前の変更方法

図2-4-25

「▼」の部分をクリックして「新しいメッセージ」を選ぶと、名前を付け替えることができます。メッセージの名前は自由に決めてかまいませんが、用途がイメージできる名前が望ましいです。今回は自動車のパーツ(= parts)であることから「parts1」と名付けました。

(.)

図2-4-26

メインルーチンは、切り離した残りの部分(変数の初期設定)の下に「[ parts1 ] を送って待つ」を合体して作成します。メインルーチンを実行して、「車体(下)」の部分がクラフトできることを確認しておきましょう。

自動車プログラムを完成させる

この後の操作は、「車体(下)」を作成した方法と同じです。

①車体のパーツのデータをリスト化する
②パーツ作成のサブルーチンを作成する。(サブルーチン名は「parts_number」)
③メインルーチンからサブルーチンを呼び出せるようにする

(データを「リスト化」してサブルーチンを作る作業は同じことの繰り返しです。単に面倒なだけですから、ダウンロードしたサンプルプログラムを利用してもかまいません。ただ作業の手順だけは頭に入れて置くようにしてください。 => プログラムの検証

まで飛ぶ)

車体(上)の作成

まず「車体(上)」を作りましょう。

図2-4-27

「車体(上)」のデータとしてリスト化したい部分を青丸で囲みました。データの数は45個あります。

図2-4-28

図2-4-27の青丸のデータを追加して、長さ 45 のリスト「upper_body(= 車体の上側)」を作成します。

図2-4-29

図2-4-29がリスト「upper_body」を読み込んでブロックを置くプログラムです。サブルーチン「parts1」を「複製」して、読み込むリスト名を「upper_body」に変更します(10箇所)。サブルーチン名は「parts2」にしました。

図2-4-30

メインルーチンは下に「[parts2] を送って待つ」ブロックを追加します。メインルーチンを実行して、「車体(上)」が作成されることを確認して下さい。

以下はすべて同じ手順を繰り返します。

タイヤ(外)のサブルーチン

以下は書籍でご確認ください

正多面体

正多面体

正多面体とは、すべての面が正多角形であり、頂点に集まる辺の数が等しい、凸型多面体のことです。ユークリッド原論が書かれた時代(紀元前3世紀頃)には、5種類の正多面体があることが知られていたと言われています。哲学者のプラトンが著書の中で正多角形について言及していることから、「プラトンの立体」と呼ばれることもあります。

正4面体

S2AR で正多面体をクラフトしてみましょう。最も簡単な正4面体を作成します 。

図2-3-1

正4面体の頂点の座標は

P1(0, 0, -1)
P2(0.866 , 0, 0.5)
P3(-0.866, 0, 0.5)
P4(0, 1.414, 0)

になります。各頂点を線で結ぶことで、正4面体をクラフトできます。

図2-3-2

図2-3-2を参照に、正4面体のプログラムを完成させてください。ブロックの色は赤に設定しました。正4面体の辺の数は 6 なので、6つの「線ブロック」を重ねます。

1つ目の線ブロックは「P1-P2」の間に線を引きます。立体の形を確認しやすいように、座標の値は10倍にしました。2つ目以降も同様に座標の値を設定してください。

線を引く順番はこの通りではなくてもかまいません。「1-2」「1-3」「1-4」「2-3」「2-4」「3-4」の6つの組み合わせがあれば、正4面体をクラフトできます。

図2-3-2a

プログラムを実行して、正4面体が作成できることを確認しましょう。

リストを使って、プログラムを改造する

図2-3-3

Scartch には「リスト」という仕組みがあります。「リスト」とはたくさんのデータ(数値や文字列)を入れておける箱のようなものです。「変数」は一つのデータしか入れておけませんが、「リスト」はたくさんのデータが入ります。正4面体の座標値の場合は、12個の座標値(4つの点)がありますが、これをまとめて1つのリストに入れておけるのです。

図2-3-4

図2-3-4は、これから作成する正4面体(regular-tetrahedron)の座標値のリストです。リストの名前は「tetrahedron(= 4面体のこと)」です。リストに入れるデータ(数値や文字列)は、入れる順番によって番号が付けられます。リストからデータを取り出すときは、例えば「リスト [tetrahedron] の1番目」と呼び出すことで、数値「0」が取り出せるのです。

リストの作成

実際にリストを作ってみましょう。

図2-3-5

Scartch のカテゴリー「データ」→「新しいリスト」を選びます。リスト名を「tetrahedron」と入力して「OK」をクリックします。

図2-3-6

図2-3-6のブロックをスクリプトエリアに移動します。

図2-3-7

入力欄に「0」を入力して、図2-3-7のブロックをクリックします。

図2-3-8

左上のステージを見ると、図2-3-8に示すように、リスト「tetrahedron」にデータ「0」が追加できているのが確認できます。

図2-3-9

2番目のデータ「0」、3番目のデータ「-1」…を同様の方法で追加していきます。長さ「12」のリストができたら完成です。点P1は1番目から3番目のデータで表します。P2, P3, P4 も同様であることを確認しておきましょう。

図2-3-10

もう一つ、リストを作成します。リスト名は「tetrahedron_line」で、6本の辺の両端の点(12個)をデータとして入れていきます。1本目の「Line1」の両端の点は「P1-P2」ですからデータ「1」「2」を追加します。「Line2」の両端の点は「P1-P3」ですからデータ「1」「3」を追加します。以下同様に「Line3」「Line4」「Line5」「Line6」の両端の点を追加していきます。

以上で、リスト作りは終了です。次はリストからデータを取り出すプログラムを考えていきましょう。

リストからデータを取り出す

1本目の線を引くプログラムを作成します。準備として、変数を11個作成しておきます。

x0, y0, z0(多面体を作り始めるときの基準点を表す)
x1, y1, z1(線ブロックの1点目を表す)
x2, y2, z2(線ブロックの2点目を表す)
times(倍率。作成する多面体の大きさを調整する)
i(カウンター変数)

図2-3-11

リスト「tetrahedron_line」より「1本目の線」の両端の点を読み込みます。図2-3-11に示すように、Line1 の両端の点はP「1」、P「2」です。

図2-3-12

図2-3-12は、「1本目の線(i = 0 のとき)」の両端の点を読み取るプログラムです。

カウンター変数「i = 0」の時、リスト「tetarhedron_line」の「i + 1 = 1」番目のデータは「1」です(P1 を表す)。「i + 2 = 2」番目のデータは「2」です(P2 を表す)。

次にリスト「tetrahedron」から「P1」「P2」の座標値を読み取ってみましょう。

図2-3-13

リスト「tetrahedron」から「1本目の線」の両端の座標値を読み込みます。図2-3-13に示すように、P1から「1番目, 2番目, 3番目」、P2から「4番目, 5番目, 6番目」を座標値として読み込めばよいことがわかります。

図2-3-14

図2-3-14は、「1本目の線(i = 0 のとき)」の両端の座標値を読み取るプログラムです。

P1 の x座標(x1)は、リストの(3 x 1 – 2)番目の数値「0」です。
P1 の y座標(y1)は、リストの(3 x 1 – 1)番目の数値「0」です。
P1 の z座標(z1)は、リストの(3 x 1)番目の数値「-1」です。
P2 の x座標(x2)は、リストの(3 x 2 – 2)番目の数値「0.866」です。
P2 の y座標(y2)は、リストの(3 x 2 – 1)番目の数値「0」です。
P2 の z座標(z2)は、リストの(3 x 2)番目の数値「0.5」です。

図2-3-15

一本目の辺を引くプログラムを完成させます。まず最初に、変数の初期値を決定します(赤枠)。変数「times」は多面体の高さが約 10 cm になるように「7」にします。図2-3-14を改造して、x1, y1, z1, x2, y2, z2 をリスト「tetrahedron」から読み取ります。最後に「線ブロック」で両端の点を指定して、「1本目の線」を引きます。
クラフトする位置は(x0, y0, z0)=(0, 0, 0)、色は赤(r, g, b)=(255, 0, 0)とします。

図2-3-16

プログラムを実行すると、「P1-P2」の辺を引くことができました。残りの辺を引くプログラムを作り、正4面体を完成させましょう。

正4面体の完成

図2-3-17

図2-3-17が正4面体を作成するプログラムの完成形です。繰り返しブロックを使い、リスト「tetrahedron_line」の長さの半分(= 6)回、線を引きます。「i」を「2」ずつ増やしてやることで、2本目以降の線についても両端の座標値を読み込むことができます。

図2-3-18

プログラムを実行して、正4面体を作成することができました。

ここでプログラミングはほぼ終わりです。その他の正多面体はリストを入れ替えるだけで作成することが可能です。正6面体(立方体)を作ってみましょう。

正6面体

以下は書籍でご確認ください

空間に文字を書く

空間に文字を書く

空間に文字を書けるとしたら、あなたはどんな言葉を書いてみたいですか?
お世話になっている方への感謝の言葉。好きな小説の一節。座右の銘。
S2AR を使えば、その夢が実現します。Scartch プログラミングで空間に文章を書くことができるのです。

空間に文字を1つ書いてみる

早速、プログラミングに入っていきます。

図2-2-1

文字ブロックを Scratch のスクリプトエリアに移動します(.)

図2-2-1を参照に「文字を一つ書く」プログラムを完成させてください。

図2-2-2

パソコンの上に原点を置いてから、プログラムをクリックして実行してください。図2-2-2のように「あ」が空間に現れたら成功です。(文字の色はお好きなものを選んで「色指定ブロック」から設定しておいてください)

上手く文字が表示できたら、座標値や文字を別のものに変えて、何度も試してみてください。軸方向(x, y, z)を変えると、どのように表示されるか、確認しておきましょう。

空間に文章を書く

図2-2-3

次に文章を書いてみましょう。S2AR に収録されているフォント(美咲フォント)は幅、高さともに7になっています。よって文字間隔は8、行間隔は10にすると、きれいに表示させることができます。

図2-2-4

図2-2-4を参照に、プログラムを完成させてください。X座標は文字間隔に合わせて 8 ずつ大きくします。Y座標は行間に合わせて 10 ずつ小さくします。

図2-2-5

プログラムを実行して、空間に文章を表示させることができました。

プログラムの改造

次はプログラムを改造していきます。改造するポイントは
①X座標、Y座標の数値を自動で変更させたい
②文字を1文字ずつではなく、文章で入力したい

①については、前章で学んだ「繰り返し処理」「変数」を使えば簡単にプログラムできます。
②については、「文字列」を学ばなければなりません。

文字列操作

文字列は「文字の集まり」を表すプログラミング用語です。文字の集まりは「単語」「文章」と考えてかまいませんが、「5%TY7mliag9dn」などの意味不明なものも文字列と呼びます。

ScratchX では、文字列を扱うのに便利なブロックが用意されています。

図2-2-6

2つの文字列を連結します。図2-2-6では、「hello 」(←hello の後にスペースが入っています)と「world」が連結されて「hello world」になります。(今回のプログラムでは使いません)

図2-2-7

文字列から「文字」を抜き出します。このブロックを使えば、文章から「文字」を一つずつ抜き出して、空間に表示させることができます。

図2-2-8

文字列の長さを調べることができます。文章から「文字数」を調べることで、何回繰り返すべきか、プログラムに教えることができるのです。

変数の設定

今回のプログラムで使用する変数は s2arX, s2arY, s2arZ, string, i の5つです。カテゴリー「データ」→「新しい変数」から作成してください。

s2arX は「s2ar の座標系の X座標」を表す変数です。
s2arY は「s2ar の座標系の Y座標」を表す変数です。
s2arZ は「s2ar の座標系の Z座標」を表す変数です。
string は「文字列」を表す変数です。
i は「カウンター変数」です。

図2-2-9

上の図を参照に、変数の初期値を設定してください。文字列は「いつも^ありがとう^お母さん」にしました。「^(カレット)」についてはあとで説明します。

1行で文字列を表示させる

図2-2-10

「繰り返し処理」を使って、文字列を表示させます。

繰り返し回数は((String)の長さ)になります。「文字ブロック」で表示させる文字は(((i)+(1))番目(String)の文字)となり、( i + 1 )番目であることに注意が必要です。s2arX は文字間隔の「8」 ずつ大きくしていきます。

図2-2-11

1行で文字列を表示できました。

改行させるには

以下は書籍でご確認ください

円錐(コーン)を作る

円錐(コーン)を作る

Scartch プログラミングで複雑な仮想オブジェクトを作っていきます。まず初めに「円錐(コーン)」をクラフトします。「円錐」は丸い塔の屋根などに使用します。「円錐」は「S2AR 拡張ブロック」には含まれていませんから、「円柱ブロック」を使って、自分でクラフトしなければなりません。

円柱ブロックを重ねて「円錐」を作る

図2-1-1

図2-1-1を参考に「色指定ブロック」と「円柱ブロック」を積み重ねてください。円柱の半径については、0.5 間隔でだんだん小さくなるように数値を設定します(青枠)。y座標の位置を一つずつ上げていくことを忘れないようにしましょう(赤枠)。ブロックの色を「黒 ⇄ 白」と変えることで、奇数段が「黒」、偶数段 が「白」を表すようにしました。

図2-1-2

パソコンデスクの上に「原点ブロック」を置いて、プログラムを実行しました。目的通りに0.5 刻みの円柱が積み上げられて、円錐をクラフトできました。

Scratch プログラミング入門

図2-1-3

先程、円柱を11段積み重ねて円錐をクラフトしました。もしこの円錐を100段にするとしたら、どうでしょう。半径や Y座標など数値を間違えないように注意しながら、何とか手動でプログラムできそうです。
では1000段にするとしたら、どうでしょう。Scratch のスクリプトエリアに1000段のブロックを置くだけでも大変です。数値(半径や Y座標)を間違いなく設定していくのも手間がかかります。できれば誰かに助けてもらいたいと思うはずです。

こういったときこそ、プログラミングの出番です。プログラミングは、あなたの指示通りに文句も言わず超高速に仕事をしてくれる、あなたの最高のアシスタントです。プログラミングと友達になって(仲良くなって)おくと、将来きっと役に立ちますよ。

今回の円錐のように、同じような作業が繰り返されるときは、「繰り返し処理」という仕組みを使えば、プログラムを短くして、読みやすくすることができます(可読性が上がるという)。また半径や積み重ねる段数なども簡単に変更できて、様々な場合を試すことができるようになります。
円柱の半径や Y座標のように、同じ間隔で数値が変わっていくときは、「変数」という仕組みを使うと便利です。
「黒 ⇄ 白」と設置するブロックが変わるときは「条件分岐」という仕組みを使います。今回の円錐の場合は、条件分岐で「奇数段は黒、偶数段は白」と指定してやることで、毎回色を指定する手間が省けます。

プログラミングの基礎である「繰り返し処理」、「変数」、「条件分岐」を一つずつ学んでいきます。

変数とは

ここから本格的はプログラミングに入っていきます。本格的と言っても難しいことをするわけではないので安心してください。一つずつゆっくりとプログラミングに慣れていってください。よく理解できなくても、手順通りに進めていくことで、仕組みがわかってくることは多いです。プログラミングも「習うより慣れろ」です。

図2-1-4

図2-1-4は「変数の例」を示した図です。今回は、s2arX, s2arY, s2arZ, r, i の5つの変数を使用します。

図2-1-5

変数とはデータ(数値や文字列)を入れておく箱のようなものです。変数は、コンピュータにデータ(数値や文字列)を渡して仕事をさせるときに使います。

コラム 文字列とは

文字列とは、単語や文章のように文字が複数個つながったものです。例えば英単語や日本語の単語はすべて文字列になります。意味のない文字の連なり「;1+djo;na」も文字列と呼ばれます。数値は文字列ではありません(決められた計算式で計算できるので)。一文字のときは厳密には「文字」と呼ぶべきですが、Scratch プログラミングでは文字列としても問題ありません。

変数の設定

実際に変数を使えるようにしてみましょう。

図2-1-6

Scratch の「カテゴリー」から「データ」を選びます。「新しい変数」をクリックします。変数の名前を「s2arX」と入力して「OK」を押してください。変数「s2arX」が作成されました。
同様にs2arY, s2arZ, r, i の変数を作成します。今回使用する変数は、この5つです。

各変数について説明します。

s2arX は「s2ar の座標系の X座標」を表す変数です。(ここにブロックを置くことになります)
s2arY は「s2ar の座標系の Y座標」を表す変数です。
s2arZ は「s2ar の座標系の Z座標」を表す変数です。
r は「円柱の半径」を表す変数です。(r は radius の略)
i は特殊な変数で、「プログラム上で数を数える(カウントする)」ために使用します。カウンター変数とも呼ばれ、慣習的にアルファベットの i(アイ)が使われます。(i の他に j, k などがカウンター変数として使用されます)

コラム 変数の名前

プログラミングでは、変数の名前のつけ方に特別な決まりがあります(これを「命名規則」という)。Scartch は初心者が迷わないように配慮されているので、難しい命名規則はなく、好きな名前をつけることが可能です。日本語の名前を使うこともできるのです。
しかし今後、本格的なプログラミング言語に進んでいくことを考えると、日本語の名前は使わない方がよいと考えました。変数の名前には、一般的に「半角英数字」が使われます。変数の名前を見て、用途がイメージできるように名前を付けることが重要です。

変数の初期値を設定

変数は variable(変わることができるもの)の日本語訳です。その名前の通り、プログラムを実行中に「中身のデータ(数値や文字列など)」はどんどん変わっていくのですが、変わる元となる初期値は必ず設定しなければなりません。

スクリプトエリアに

図2-1-7

図2-1-7のブロックを7つ移動します。

図2-1-8

▼を押して、変数名をs2arX, s2arY, s2arZ, r, i になるように設定します。

図2-1-9

次に変数の初期値を
s2arX = 0
s2arY = 3
s2arZ = 0
r = 6
i = 0

になるように設定します。図2-1-9のプログラムをクリックして実行すると、各変数に初期値が設定されます。左上のステージを見て確認してください。

(注意)プログラミングでは「=」は右の値を左の変数に代入することを示します。数学の「イコール」とは全く違うので注意してください

以上で、変数の初期値の設定は終了です。

繰り返し処理

図2-1-10

今回の円錐では、色の指定、円柱を置く、色の指定、円柱を置く…のように同じ作業の繰り返しが何度も登場しました。一般のプログラム上でも、こういった繰り返しがたくさん出てきます。そんなときに使うと便利な仕組みが「繰り返し処理」なのです。

繰り返し処理をプログラミングしてみましょう。

変数の初期設定の下に

図2-1-11

図2-1-11のブロックを合体させます。繰り返しブロックの間に

図2-1-12

図2-1-13

「繰り返しブロック」の間に図2-1-12/ 13の2種類のブロックを挿入します。

図2-1-15

図2-1-15を参照に、繰り返し処理を完成させてください。11回、円柱ブロックを重ねるプログラムができました。

図2-1-16

プログラムを実行してみると、真っ黒な円錐が現れました(作業手順によっては真っ白な円錐になるかもしれません)。成功です。次に、交互に色を変える方法を考えていきます。

条件分岐

図2-1-17

条件分岐とは、プログラム自身に判断させて、処理を分ける仕組みのことです。
あらかじめ与えられた「条件式」をプログラムは読み込みます。条件に合致している(YES)のときは「処理1」を実行します。合致しない(N0)のときは「処理2」を実行します。

この章の最初に作ったプログラムでは、円錐の1段目は「黒」、2段目は「白」、3段目は「黒」、、、といちいち色を指定しました。条件分岐を使えば、そういった面倒な作業がなくなります。

今回の円錐の場合は、条件式は、「繰り返し回数が偶数かどうか?」です。偶数のとき(YES)は処理1「ブロックの色を黒に設定」が実行されます。奇数のとき(NO)のときは処理2「ブロックの色を白に設定」が実行されます。

条件分岐で白と黒を分ける

実際に「条件分岐」をプログラミングしてみましょう。

図2-1-18

図2-1-18が条件分岐を表すブロックです。「もし< >なら」の部分に「条件式」を挿入します。その下に「処理1」と「処理2」を挿入することで、処理を分岐させることができます。

図2-1-19

条件式は「繰り返し回数が偶数かどうか」です。繰り返し回数は「i」なので、それを2で割った余りを見て、「0」なら「偶数」、「1」なら「奇数」ということになります。(プログラムで回数を数えるときは、「0」から数えることが多いです。一般の感覚とは違いますが、「0」から数えた方が何かと都合が良いからです。今回の円錐でも「0」から数えていますから、「0 = 偶数は黒」となります)

図2-1-20

図2-1-21

この2つが「処理1=ブロックを黒(r, g, b)=(0, 0, 0)に設定」「処理2=ブロックを白(r, g, b)=(255, 255, 255)に設定」を表します。

図2-1-22

以上の4つのパーツを合体させて、条件分岐ブロックが完成します。「i 」の数が 0, 1, 2, 3, 4, … と一つずつ増えていく度に、「処理1」「処理2」が交互に呼び出されるプログラムが完成しました。

図2-1-23

図2-1-22の条件分岐ブロックを「円柱ブロック」の上に合体して、今回のプログラムは完成です。実行して、白と黒が交互に変わる円柱ができることを確認してください。

プログラムの改造

今回のプログラムを改造してみましょう。

図2-1-24

円柱の半径を「20」、繰り返し回数を「100」、間隔を「0.2」に設定して見ます。これで100段積みの円錐ができるはずです。

図2-1-25

実行結果が図2-1-25です(実行に時間がかかる場合は、iPhone を動かさずにしばらくお待ちください)。目的通り「100段積みの円錐」が完成しました。高さは約1 メートル(100 cm)の円錐です。
(厳密にいうと、半径 1 以下の円柱は置かれませんので、96段の円柱になっています)

図2-1-26

今回作成したプログラムは、「ファイル」→「プロジェクトを保存?」から、名前「ar_corn.sbx」をつけて保存しておきましょう。

図2-1-27

ファイルを保存する場所は自由に決めてよいのですが、オススメは「書類」フォルダの中に「ScratchX_project」フォルダを作って、その中にファイルを入れていくことです。(もっと簡単な方法は「デスクトップ」にそのままファイルを入れていくことです)

このプログラム(ar_cone.sbx)はダウンロードして、自分で確かめることがきます。

サンプルプログラムへのリンク

(このリンクのサポートサイトから「対象のファイル」をダウンロードしてください)

(宿題)色を変更したり半径や段数を変えたり、初期値の違った、色々な円錐を作ってみましょう。繰り返し回数を増やして、r(半径)がマイナスになったときに、どうなるか実験してみましょう。