p200からの「ベルトコンベアのゲーム」(Atlas6.pde)についてプログラムを見てきましたが、今回はdraw()の中のdrawGame()の中のdrawGridLinks()を見てみます。

この関数の働きは「// グリッドを調査して繋がりを判定、描画」となっています。

ローカルな ArrayList linkUnits を定義しています。それと、繋がりを計数する変数 linkCount も。

二重のforループで、表示されているユニット全てについて処理していきます。

まず、対象とするgrid[][]をローカルなUnitのunitに代入。繋がっている数を調べます。

countLinkedUnit()は繋がっているユニットの数を数える関数のようですが、再帰処理を含んでおり、Atlas6のメインディッシュなので、解析は後にとっておきます。

countLinkedUnit()による計数結果nが、UNIT_LINK_NUM(この数に達するとUnitは消滅する)に達していて、このUnitのlifeFramesが負のとき、「// 繋がっているユニットを一定フレームで消滅させる」処理を行っています。

for(Unit u : linkUnits)は、ArrayListであるlinkUnitsの要素となっているUnit全てについて処理を行うという意味のようです。それぞれのUnitのメンバー関数setLifeFrames(60)を実行します。具体的には、u.lifeFramesに60を代入するだけの処理です。

消滅処理のfor文を抜けて、if(unit!=null) 文を抜けて、繋がりがある場合には unit.drawLinks()で繋がりを描画します。重複しないように右と下の繋がりだけ描画するようになっています。

二重のforループを抜けて、ボーナスとかスコアに関する処理をしています。



《インデックス》

◆◆◆参考文献「遊んで作るスマホゲームプログラミング for Android
◆◆◆公文生ならゲームで遊ぶな!ゲームを作れ!
◆◆◆公文式小林教室◆山形県東根市◆◆◆