001 import swarm.*; 002 003 /** 004 * パラメータのロード・セーブ<BR> 005 * <BR> 006 * パラメータをファイルから読み込むようする。 007 * これにより、設定が変わるたびにコンパイルし直す必要がなくなる。<BR> 008 * <BR> 009 * ファイルからパラメータを読み込むにはlispAppArchiverを用いる。 010 * lispAppArchiverは<appname>.scmというファイルをカレント・ディレクトリから探す。 011 * ここでは<appname>はbugであるから、探索されるファイルはbug.scmということになる。 012 * 他のファイル名を用いる方法はjmousetrapを参考にしてほしい。<BR> 013 * <BR> 014 * パラメータ・ファイルの内容は次のようなLispのS式である。<BR> 015 * <BR> 016 * <PRE>(list 017 * (cons 'modelSwarm 018 * (make-instance 'ModelSwarm 019 * #:worldXSize 80 020 * #:worldYSize 80 021 * #:seedProb 0.9 022 * #:bugDensity 0.01)))</PRE> 023 * <BR> 024 * ModelSwarmのインスタンスをこのように生成する場合、指定されているフィールドはpublicでなければならないことに注意。<BR> 025 * <BR> 026 * ここでは説明しないが、lispAppArchiverはputShallowやputDeepによってファイルにデータを書き出すこともできる。<BR> 027 * <BR> 028 * 次はsimpleObserverSwarm 029 * @author YABUKI Taro 030 * @version 0.4 031 */ 032 033 public class simpleSwarmBug3{ 034 public static void main(String[] args) { 035 ModelSwarm modelSwarm; 036 037 Globals.env.initSwarm("bug", "0.4", "YABUKI Taro", args); 038 039 // bug.scmからModelSwarmのインスタンスを生成する。 040 modelSwarm = (ModelSwarm)Globals.env.lispAppArchiver.getWithZone$key(Globals.env.globalZone,"modelSwarm"); 041 042 // インスタンスが生成されなかった場合 043 if(modelSwarm==null){ 044 System.out.println("Can't find the modelSwarm parameters."); 045 System.exit(1); 046 } 047 // Objective-Cの場合の次の処理は未実装 048 //raiseEvent(InvalidOperation,"Can't find the modelSwarm parameters"); 049 050 modelSwarm.buildObjects(); 051 modelSwarm.buildActions(); 052 modelSwarm.activateIn(null); 053 modelSwarm.getActivity().run(); 054 } 055 }