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    }