記事を検索

toragijr.cqpub.co.jp

トラ技Jr.

【GENES】プログラム改造計画② 餌出現と細胞分裂時の位置座標を補正

【GENES】プログラム改造計画② 餌出現と細胞分裂時の位置座標を補正

白井 優樹

 加藤 隆志氏が開発した仮想生物進化シミュレーション・ゲーム「GENES」を題材に,読者参加型のプロジェクト「GENESプロジェクト」を実施しています.本稿は,GENESのプログラム改造についての寄稿記事です.

※GENESプロジェクトについて:詳しくはこちら

 GENE個体は,画面上にまかれる餌を消費して寿命を伸ばします.蓄積されたエネルギがしきい値を超えると個体は分裂していきます.

 オリジナルのプログラムでは,餌出現と分裂がランダムに処理されているため,遊び尽くしていると突然,位置座標が変わることがありました.

バグ対策①…餌をまく処理

 ゲーム画面には最大4096 個の餌を表示でき,タイマ処理1回(1/100秒に1回)につき1個の餌がまかれます.

 この処理では餌の管理番号と座標をランダムに決めています.ある程度の数になると,すでに存在する餌と同じ管理番号が割り当てられることがあり,存在していた餌の位置が突然変わります.増加スピードも鈍ります.

 そこで,リスト1に示すように,①餌の数が最大値未満のとき(ifの追加)に新しく餌をまくようにし,②まきたい餌の番号がすでに有効な場合には,別の番号にする処理(whileの行)を入れました.

 

リスト1 餌をまく処理にチェック要素を追加

 

バグ対策②…細胞分裂の処理

  細胞が分裂すると,もとの個体の他にもう1つ新しい個体が生まれます.これも餌と同じようにランダムに番号を決めています.餌と同様,すでにある個体と同じ番号が割り当てられると,個体の内容や位置が変わってしまいます(餌の数ほど個体数は多くないので,あまり目立ちませんが…).

 そこでリスト2に示すように,①しきい値の判定に加えて個体数が最大値未満のとき(if の条件追加)に分裂するようにし,②指定した番号が存在している場合には,別の番号にする処理(while の行)を入れました.

 

リスト2 細胞分裂の処理にチェック要素を追加

 

 GENE の動作は,餌の撒かれる状況など,だいぶ変化があるので,いろいろ試してください.

※改造したプログラム(Form1.cs)の全文はこちら