#author("2019-06-05T14:03:34+09:00","default:qua","qua") #navi(Processing/4.クラスの利用) * 4-2 引数付きコンストラクタ [#c6a2192e] #author("2019-06-05T14:07:10+09:00","default:qua","qua") 前の章の例では、すべてのキャラクタが同じ色であった。new Monsterで作成するときに、 個別に色を設定できるようにしてみよう。それには、Monster( int cl )のようにコンストラクタに引数を取らせる。m=new Monster( color( 240, 0, 0 ) )のように引数に色を指定して 実体を作成すると、コンストラクタの最後の行c=clでプロパティm.cにこの色が設定される。 class Monster{ float x, y, dx, dy, d; int c; Monster( int cl ){ x = -1; y = 0; dx = 0; dy = 0; d = 1; c = cl; } void move(){ fill( c ); rect( x, y, 40, 60 ); fill( 255 ); ellipse( x + 15, y + 20, 10, 15 ); ellipse( x + 25, y + 20, 10, 15 ); fill( 0 ); ellipse( x + 15 + dx * d, y + 20 + dy * d, 5, 5 ); ellipse( x + 25 + dx * d, y + 20 + dy * d, 5, 5 ); x = x + dx; y = y + dy; if( x<0 || x>width || y<0 || y>height ){ x = random( 10, width-10 ); y = random( 10, height-10 ); switch( int(random(4) ) ){ case 0: dx = 0; dy = 2; break; case 1: dx = 0; dy = -2; break; case 2: dx = 2; dy = 0; break; default: dx = -2; dy = 0; break; } } if( frameCount % 60 == 0 ) d = 1; if( frameCount % 60 == 40 ) d = -1; } } このように変更すると、以前のスケッチのようにm=new Monster()ではエラーになってしまう。そのような場合に、元のように青色にするということもできる。 class Monster{ float x, y, dx, dy, d; int c; Monster( int cl ){ x = -1; y = 0; dx = 0; dy = 0; d = 1; c = cl; } Monster(){ this( #0000f0 ); } void move(){ ... } } ここで、 Monster(){ this( #0000f0 ); } の部分が引数なしでnew Monster()を実行した場合の処理である。ここには、this( #0000f0 )と書かれており、Monster( #0000f0 )と同じ処理を行うことを意味する。