Boids 3.1 – コード説明

概要

Boids 3.1で、いよいよEnemyを導入する。大まかな流れは以下の通り。

  • Creatureクラスを継承したEnemyCreatureクラスを定義する
  • EnemyCreature特有の行動はEnemy同士の分離(separation)のみ
  • BoidCreatureはEnemyCreatureを避ける行動をとる
  • BoidCreatureの群とEnemyCreatureの群を、それぞれのClusterオブジェクトに登録。

EnemyCreatureクラスの追加

Creatureクラスを継承したEnemyCreatureクラスを追加する。そのメソッド構成は以下の通り。specificBehaviorについては、Enemyに特別な行動ルールはなく、分離(separation)のみ実装している。separation()メソッドはBoidCreatureとまったく同じロジック。

Controlerクラスの変更

パラメータ関係

Controlerクラスのパラメータ設定用setterを追加(後述)

Enemy発生用メソッドの追加

BoidCreatureクラスと同じ内容で、createEnemyCreature()メソッドを追加

generate()メソッドを変更

generate()メソッドで、Boidに加えてEnemyも指定個体数だけ発生させるよう追加。

BoidがEnemyから逃げる動作

BoidCreatureクラスに新たにavoidEnemy()メソッドを追加し、specificBehavior()でこれを呼び出すよう変更。avoidEnemy()メソッドの内容は以下の通り。

  • 基本のロジックはsepration()メソッドと同じ
  • ただし分離の相手方がEnemyの群になる
  • 敵から回避する角度は、仲間との分離の角度より大きくする(パラメータで与える)

実行部分

ページ読み込み時の実行部分は以下の通りで、2つのボタンのクリックに対する処理を定義。

  • GENERATEボタンが押された時は、BoidCreatureの群とEnemyCreatureの群を発生させる
  • START/STOPボタンが押されたときは、ControlerクラスのstartAndStop()メソッドを呼び出す

コード全体

HTML

CoffeeScript

クラス構成

Fieldクラス

Creatureクラス

BoidCreatureクラス

EnemyCreatureクラス

Clusterクラス

Controlerクラス

 


↑ Boids 3.0のコード説明へ

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です