Changes between Version 2 and Version 3 of Java Client Tutorial


Ignore:
Timestamp:
Oct 23, 2011 1:03:05 PM (13 years ago)
Author:
jherwitz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Java Client Tutorial

    v2 v3  
    2525
    2626
     27The developer must also define a few specific functions for the Scenario class to be implemented. These are procedural, and the Scenario object will execute them automatically in a logical order to initialize the scenario correctly.
     28
     29The ''configure'' function allows the developer to make server modifications, in order to enable any fundamental rules. For example, to enable data logging in the CaptureTheFlag scenario, we have:
     30
     31{{{
     32        protected void configure() throws IOException{
     33                File configfile = new File(System.getenv("HOME") + "/.quagents3/quagents3/quagents-config.cfg");
     34                if(!configfile.isFile())
     35                        configfile.createNewFile();
     36                else{
     37                        configfile.delete();
     38                        configfile.createNewFile();
     39                }
     40                Writer config = new FileWriter(configfile);
     41                config.write("LOC_FLAG 1");
     42                config.flush();
     43                if(logfilename!=""){
     44                        config.write("LOC_FILENAME " + logfilename);
     45                        config.flush();
     46                }
     47                if(lograte!=-1){
     48                        config.write("NUM_FRAMES_PER_LOG " + lograte);
     49                        config.flush();
     50                }
     51        }
     52}}}
     53
     54This makes modifications to the server's configuration file, enabling the data logging changes in the server code.
     55
     56The ''setGUI'' function allows the user to insert a new GUI to run alongside the Quagents3 scenario execution. If no GUI is desired, simply define this as a blank function. The CaveExploration handles this function as such:
     57
     58{{{
     59protected void setGUI() {
     60                if(explorers.length==0){
     61                        Quagents.frame.setVisible(false);
     62                        return;
     63                }
     64                Quagents.next = new CaveExplorationGUI(explorers,survivors,director);
     65                Quagents.frame.setName("Quagents3 " + scenarioname);
     66                Quagents.frame.add(Quagents.next);
     67                Quagents.frame.pack();
     68                Quagents.frame.setVisible(true);
     69                }
     70        }
     71}}}
     72
     73The ''runQuagentCode'' function allows the developer an opportunity to start his quagents executing. Many times, this consists of a call to the Quagent interface's executeCode function. The CaveExploration scenario once again provides an example:
     74
     75{{{
     76protected void runQuagentCode(){
     77                for(int i=0; i<explorers.length; i++)
     78                        explorers[i].executeCode();
     79        }
     80}}}
     81
     82Finally, the ''initialize'' function allows the developer an opportunity to instantiate and initialize Quagents or any other miscellaneous scenario components. For instance, in CaveExplorer we have:
     83
     84{{{
     85protected void initialize() {
     86                for(int i=0; i<explorers.length; i++){
     87                        explorers[i] = new CaveExplorer(i);
     88                }
     89                for(int i=0; i<survivors.length; i++){
     90                        if(randwidth > 0)
     91                                survivors[i] = new TrappedSurvivor(i,randwidth,randheight);
     92                        else
     93                                survivors[i] = new TrappedSurvivor(i);
     94                }
     95        }
     96}}}
     97
     98These functions are executed automatically in the following order at startup:
     99 * ''configure''
     100 * ''initialize''
     101 * ''setGUI''
     102 * ''runQuagentCode''
     103
     104See the previously created scenarios in quagents3.main for more example code.
    27105
    28106==== Writing Quagent Code ====