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 }