連載

テラリウム徹底攻略ガイド

第4回 KAnimalクラスを使った草食動物の作成


泉 祐介+デジタルアドバンテージ
2002/05/25
改訂版はこちら(2003/05/10)


テラリウムサロン
テラリウムに関するご質問やご意見はこちらへ

 今回からは、前回の最後で予告したように、オリジナルの動物をプログラミングしていく。まず今回は草食動物を作成するが、それと同時に、次回予定している肉食動物でも共通して使用する基底クラスとなるKAnimalクラスも作成する。

KAnimalクラスとは

 KAnimalクラスは、Animalクラスを継承し、独自に開発した新しいクラスである。このクラスは、草食動物や肉食動物を簡単に作成できるように、移動、摂食、戦闘の際の攻撃と防御といった、ごく基本的な行動を実装している。そのため、このクラスを使って動物を作るときは、その動物の特徴となる部分を記述するだけでよい(KAnimalクラスはここ(kanimal.cs)からダウンロードすることができる。またVB.NET版(kanimal.vb)も用意した)。

KAnimalクラス(C#版)をダウンロードする
KAnimalクラス(VB.NET版)をダウンロードする

 KAnimalクラスを使って動物を作成する際には、Animalクラスの代わりにKAnimalクラスを継承したサブクラス(子クラス)を作成し、独自の戦略を記述することになる。実際にKAnimalクラスを利用して作成した草食動物の例を後ほど示す(このソース・コードはここ(tabata.cs)からダウンロードすることができる。またVB.NET版はここ(tabata.vb)からダウンロードできる)。

今回作成した草食動物のプログラム(C#版)をダウンロードする
今回作成した草食動物のプログラム(VB.NET版)をダウンロードする

 このKAnimalクラスには、IsBrunt、IsFood、IsThreat、そしてIdleEventという4つの抽象メソッドがある(Bruntは「攻撃先」、Threatは「脅威」の意)。従って、このクラスを利用した動物を作る場合は、最低でもこれらのメソッドを継承する側で記述する必要がある。しかし、KAnimalクラスでは基本的な行動をほぼ実装しているため、この4つのメソッドさえ記述すれば、それなりの動物が作成できるようになっている。また、KAnimalクラスには、これら4つのメソッドの中身を記述するのに便利なメソッドやプロパティなどもいくつか用意している。これらはKAnimalクラス利用のいかんにかかわらず、生物プログラミングをするうえで参考になるだろう。

 ここでは具体的な動物を作る前に、簡単にKAnimalクラスのこれら4つの抽象メソッドに関して説明しておこう。

IsBrunt、IsFood、IsThreatメソッド

 これらのメソッドはそれぞれ、作成する動物が、どの生物を攻撃するか、どの生物を食べるか、あるいはどの生物を脅威と見なすかといったことを決定するメソッドだ。KAnimalクラスでは、内部で処理しているいくつかのイベントやメソッドの中で、サブクラスでオーバーライドされているこれらのメソッドを呼び出しており、攻撃/摂食/防御の対象として最も適した生物を決定するのにそれらを利用するようになっている。各対象として決定された生物は、KAnimalクラスの持つ“Brunt”、“Food”、“Threat”の各プロパティ値として設定されるため、実際の動物の行動を記述するIdleEventメソッドなどを簡潔に記述できる仕組みとなっている。

 それぞれのメソッドの書式と内容は次のとおり。

■protected bool IsBrunt(OrganismState target)

 どのような生物を攻撃するかを決定するメソッド。引数として渡された生物targetが、攻撃対象になるような生物であればtrueを、そうでなければfalseを返すようにする。

■protected bool IsFood(OrganismState target)

 どのような生物を食料であると見なすかを決定するメソッド。引数として渡された生物targetを食料であると見なす場合はtrueを、食料であると見なさない場合はfalseを返すようにする。

■protected bool IsThreat(OrganismState target)

 どのような生物を脅威であると見なすかを決定するメソッド。引数として渡された生物targetが、脅威となる生物であればtrueを、そうでない場合はfalseを返すようにする。

 Brunt、Food、Threatの各プロパティについては、実際にKAnimalクラスを利用した動物を作成するところで述べることにする。

IdleEventメソッド

 このメソッドは、Idleイベントのハンドラ、つまりIdleイベントが発生したときに呼び出されるメソッドだ。このメソッドに基本的な行動パターンを記述することになる。

 メソッドの書式は次のとおりである。

■protected bool IdleEvent(object sender, IdleEventArgs e)

 KAnimalクラスでは、いくつかのイベントに関して内部で処理しているが、IdleEventイベントに関しては、抽象メソッドであるこのIdleEventメソッドをイベント・ハンドラとして設定しているだけだ。テラリウムのイベント・モデルに関しては、前回にすでに解説している。

 

 INDEX
  [連載]テラリウム徹底攻略ガイド
  第4回 KAnimalクラスを使った草食動物の作成
   KAnimalクラスとは
     草食動物を作成する(1)
     草食動物を作成する(2)
     草食動物を作成する(3)
     KAnimalクラスのプロパティとメソッド
     KAnimalクラスで処理しているイベント(1)
     KAnimalクラスで処理しているイベント(2)
 
更新履歴
【2002.5.24】 掲載したプログラム(kanimal.cs、kanimal.vb)と、このプログラムを引用している「KAnimalクラスで処理しているイベント(2)」内のコードの一部に誤りがありました。お詫びして訂正させていただきます。

インデックス・ページヘ  「連載  テラリウム徹底攻略ガイド」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間