レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

番号を指定して配列からデータを取り出す

配列は、データを複数まとめて扱う仕組みであり「繰り返し」という構造をとても相性がいいのですが、繰り返しのためだけのデータ構造ではありません。

データが順番に並んでいるので、番号を指定して配列のデータを使うこともできます。

この時注意が必要なのは、先頭のデータの番号は0番であるということです。

以下のプログラムで「list」配列に含まれる「1」というデータは、「list[0]」という指定をして取り出すことができます。

また「list」は3つの要素を持つ配列ですが、最後のデータ「-4」の番号は「list[2]」です。直感的とは言えないのですが、様々なプログラム言語で配列の番号はこのように0から始まります。

f:id:iad_otomamay:20191128164902p:plain

番号を指定して配列からデータを取り出して使う


 

[公式]番号を指定して配列からデータを取り出す

配列を使った繰り返し

繰り返しは大変便利なのですが、数字を規則的にカウンターとして取り出しながら繰り返すことが中心です。

規則的でない繰り返しや、微妙な微調整をするには配列を使った繰り返しを使うと良いでしょう。

 

配列とは変数とよく似た要素で「違いは複数のデータをまとめて保存できる」のが配列であるということです。

以下の例では、配列にカンマ区切りの小数データを入れて、その配列を繰り返しています。

 

小数データを使って、物体に異なる透明度を設定しました。

これによって真ん中の物体だけ少し透明度を抑えたいなど、配列のデータを操作することで繰り返しで使われるデータを微調整することができます。

 

f:id:iad_otomamay:20191128165631p:plain

配列の要素を繰り返す


配列の要素を繰り返す

繰り返しブロックの内側に複数のブロックを書く

繰り返しブロックの内側にも物体などを組み合わせて配置することができます。

繰り返しブロックの内側を1回の仕事として実行して、次の繰り返しに移るという動作のしかたをします。

 

「= counter」が入っている箇所をよく確認してみてください。

  1. 繰り返しブロックでcounter変数を作る
  2. 直方体のX(横位置)を「counter * 2」としている(掛け算をしているのは少し間隔を離すため)
  3. 球体のX(横位置)も「counter * 2」としている直方体とはY位置がずれているので重なってしまわない
  4. 半角英数字の表示文字として「= counter」を指定している。またXも直方体、球体と同じく間隔をとっている

 

f:id:iad_otomamay:20191128133020p:plain

 

繰り返しのイメージは、プログラミングでは大変重要なので色々な繰り返しを試して感覚を身に付けることが大事です。


[公式]繰り返しでたくさんの物体を作る

繰り返しブロックのカウンタ変数

繰り返しのブロックには、「変数 xを カウントして」という記載があります。

繰り返しブロックを作ると、同時に変数xが作られて0(min)から10(max)までの繰り返しの数字が入る状態になります。

 

繰り返しブロックの内側で、この変数xを使うことができます。

 

f:id:iad_otomamay:20191128130108p:plain

繰り返しブロックのカウンタ変数

位置x(横位置)、位置y(縦位置)のどちらも変数xの値にしたことで、右上に積み上がっていく階段になりました。

 

[公式]繰り返しブロックのカウンタ変数

BLOCKVROCKリファレンス 目次

だれでも簡単にVRやARが作れるサービスBLOCKVROCKについてリファレンスを書いていっています。
記事を投稿したら、この目次を更新していきます。

 

【紹介】
1−1 BLOCKVROCKというWebVRサービス
https://daiyamamoto.hatenablog.com/entry/2019/11/26/144231

 

【BLOCKプログラミング入門】

1−2 BLOCKVROCKでHelloWorld
https://daiyamamoto.hatenablog.com/entry/2019/11/26/155341

1−3 物体の位置

https://daiyamamoto.hatenablog.com/entry/2019/12/11/135548

1−4 物体の回転(X軸)
https://daiyamamoto.hatenablog.com/entry/2019/11/29/164423

1−5 物体の回転(Y軸)
https://daiyamamoto.hatenablog.com/entry/2019/11/29/165257

1−6 物体の回転(Z軸)
https://daiyamamoto.hatenablog.com/entry/2019/11/29/170830

1−7 物理エンジンで物体に重さをつける

https://daiyamamoto.hatenablog.com/entry/2019/12/03/092215

1−8 物体を受け止める土台を作る

https://daiyamamoto.hatenablog.com/entry/2019/12/03/191744 

 1−9 殴れる物体を作る

https://daiyamamoto.hatenablog.com/entry/2020/01/05/210229

 1−10 カメラを操作する
https://daiyamamoto.hatenablog.com/

1-12 視線の方向に常に直進する
https://daiyamamoto.hatenablog.com/entry/2020/01/25/190835

1−11 チェックポイントによる移動
https://daiyamamoto.hatenablog.com/entry/2019/12/18/215102

 

 

【BLOCKプログラミング中級】

2-1 BLOCKVROCKでの変数
https://daiyamamoto.hatenablog.com/entry/2019/11/27/200307

2-2 変数によるデータの名前付け
https://daiyamamoto.hatenablog.com/entry/2019/11/27/202320

2-3 変数と演算
https://daiyamamoto.hatenablog.com/entry/2019/11/27/215647

2-4 掛け算(乗算)の演算
https://daiyamamoto.hatenablog.com/entry/2019/11/27/222024

2−5 繰り返しを使った複数の物体作成
https://daiyamamoto.hatenablog.com/entry/2019/11/28/115904

2−6 繰り返しブロックのカウンタ変数
https://daiyamamoto.hatenablog.com/entry/2019/11/28/130559

2−7 繰り返しブロックでたくさんの物体を作る
https://daiyamamoto.hatenablog.com/entry/2019/11/28/133610

2−8 物体をアニメーションさせる

https://daiyamamoto.hatenablog.com/entry/2020/01/05/202141 

2−9 クリックしたときに物体を移動させる

https://daiyamamoto.hatenablog.com/entry/2020/01/05/203214 

 

【BLOCKプログラミング中上級】

3−1 配列を使った繰り返し
https://daiyamamoto.hatenablog.com/entry/2019/11/28/170256

3−2 番号を指定して配列からデータを取り出す
https://daiyamamoto.hatenablog.com/entry/2019/11/28/171105

 

【BLOCKプログラミング その他機能紹介】

4-1 子要素をとにかく円形に配置してくれるブロック
https://daiyamamoto.hatenablog.com/entry/2019/11/26/150446

 

【CODEプログラミング 入門】

5-1 JavaScriptコードモードを使って物体をアニメーションさせる
https://daiyamamoto.hatenablog.com/entry/2019/12/13/101010

 

繰り返しを使った複数の物体作成

コンピューターが得意なことの1つは、同じ作業を苦もなく繰り返すことです。

プログラミングはコンピューターへの命令なので、やはり繰り返し同じことを実行してもらう命令が重要です。

BLOCKVROCKでは、こういった繰り返しに使える「変数xをカウントして0から10まで繰り返す」というブロックがあります。

 

このブロックは、VRの世界が作られるときに内側のブロック定義を0(min) から 10(max)まで繰り返してくれます。

maxの値を大きくすれば繰り返しの数が増えます。

 

繰り返しの内側に、直方体などの物体のブロックを配置するだけだと、繰り返し同じ場所に物体が作られてしまい結果的に1つの物体しか作られていないように見えてしまいます。そのため位置や色をばらけさせる「ランダムな位置」と「ランダムな色」という属性ブロックを繋げておきます。

 

1シーン中にたくさんの物体を作ると、画面がとても重くなってしまうので最大300個ぐらいにしておくのが良いでしょう。

 

ランダムな位置やランダムな色の属性をつけると、元の直方体の色や位置は上書きされて使えなくなります。

 

f:id:iad_otomamay:20191128112827p:plain

繰り返しを使った複数の物体作成

 

[公式]繰り返しを使った複数の物体作成

 

 

このプログラムは、BLOCKVROCKのチュートリアルを書き始めたときに記載したサンプルとほとんど同じものです。

https://daiyamamoto.hatenablog.com/entry/2019/11/26/144231

 

掛け算(乗算)の演算

四則演算と呼ばれる演算には、足し算(加算)引き算(減算)掛け算(乗算)割り算(除算)があります。

特に掛け算は、数学で使う記号(x)とは異なり、アスタリスク(*)を使うので注意が必要です。乗算に*を使うのはBLOCKVROCKだけではなく、ほとんどの言語で共通するルールです。

 

f:id:iad_otomamay:20191127221611p:plain

掛け算(乗算)の演算

 

 

[公式]掛け算(乗算)の演算