初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Processing 入門

10.みどりを救え2 配列と関数の引数

 

今回は [ みどりを救えゲームを作ろう ] の続きです。

前回、プレイヤー(自機)の表示と移動をしました。
次は、複数のオブジェクト(落下物)を表示・移動させます。

私の組むプログラムの変数名は短め(文字数が少ない)です。
一般的には、意味が分かる名前が良いとされています。

 

 

複数のオブジェクトを表示しよう

複数のオブジェクト(落下物)を表示していきます。
プログラムを次のように変更しましょう。
変数 ow, oh はオブジェクトの幅と高さです。

 

複数のオブジェクトの表示

31行目、変数 i に 40 を掛けています。(さらに+5して微調整)
これで四角が横に 40 ずつ、ずれて表示されます。

 

実行してみましょう。

横一列にオブジェクトを表示

 

 

配列変数を使おう

オブジェクトを落下させます。
ここで配列変数(ただ「配列」と呼ぶことが多い)を使います。

配列変数の働きは変数と同じです。
ただ番号をつけて同じ名前の変数を複数あつかえるようにしただけです。
番号をつける時には角カッコ [ ] を使います。
キーの位置はだいたい Enter キーの横にあります。

 

角かっこのキーの場所

 

 

プログラムを次のように変更してください。
7行目で配列変数の宣言をしています。
これで oy[0] から oy[9] までの 10個の変数が使えるようになります。
0 から 9 で 10個です。1 から 10 ではありません。

配列を使い複数のオブジェクトを動かす

36行目、y座標を配列 oy[i] に変更しています。
42行目、y座標 oy[i] がウィンドウの外へ出たかチェックしています。
システム変数の height でウィンドウの高さを取得できます。

 

実行してみましょう。
10個のオブジェクトが落下を繰り返します。

全ての赤い四角が下に移動する

 

 

オブジェクトの色を変えよう

オブジェクトの色を変更します。
オブジェクトが発生するたび、色を変更したいのでランダム関数を使います。
プログラムを変更しましょう。

 

落下のたびオブジェクトの色を変える

15行目、配列 oColor に色の情報(0 か 1)を入れてます。
random 関数は、0から引数未満のランダムな数を発生させます
未満とは引数の数を含まない、それより小さい数です。

random (2) の場合、0から 1.9999… の間の数を
random (100) なら、0 から 99.999… の間の数を発生します。

int ( random (2) ) とした場合、0か1の数になります。
難しくいうと float の数を int にしているのです。

50行目、ここでも色情報を変更します。
これで画面外へ出てまた上から表示される時、色が変わって表示されます。

 

実行してみましょう。
落下を繰り返すたびに色が変わります。

落下のたび色が変わるのを確認する

 

 

関数で引数を使おう

プログラムの中に同じ処理をしている所があります。
それは setup( ) と objMove( ) の中にあるオブジェクト用の配列を初期化している場所です。

 

2カ所で同じ処理をしているところ

setup( ) では初めに表示するための初期化を行い、
objMove( ) では画面外へ出たときの初期化しています。

 

 

これからオブジェクトに関する変数は増えていくので、
初期化の処理を関数にしたいと思います。

次のように変更しましょう。
新たに関数 objInit (int no) を追加しました。

オブジェクトの初期化処理を関数にする

 

これまでの関数にはカッコの中になにもありませんでした。

void 関数名(引数)
と書くと、数や文字列を渡すことができるようになります。
例えば objInit (5) を実行すれば

oy[5] = 40;
oColor[5] = int ( random(2) );

というように、変数 no の中に 5 が入ります。
とても便利なので覚えましょう。
ちなみに、引数は「ひきすう」と読みます。

 

 

保存してますか?

ところで…
プログラム(スケッチ)の保存をしてますか?

基本的には、作業の途中で保存をする習慣をつけましょう。
やり方は「ファイル」をクリック、次に「保存」をクリックします。
または、ショートカットキー Ctrl+s なら簡単に保存できます。

 

プログラムを保存する