How to use make: make compile compile the simulator make gui g={group} run given group in GUI mode make run g={group} r={n} repeatedly run given group n times =============================================================== Author: Kevin Shi, Orestis Polychroniou Email: kshi@cs.columbia.edu, orestis@cs.columbia.edu Player The players must extend the "pentos/sim/Player.java" interface. An example dummy player is provided in "pentos/g0/Player.java". The player code must be on a separate directory/package and the basic class must be in "Player.java". For example, group 4 should have the main class in "pentos/g4/Player.java" under the pacakge pentos.g4 The interface for a player specifies two methods, an "init()" method to initialize the player object and a "play()" method to return the next movement of the player. The simulator first calls the default constructor with no arguments and then calls the "init()" method. As the game is played, the "play()" method is called on every turn until the game ends. The "play()" method should return a boolean specifying whether the building is accepted or rejected. If the request is rejected, the player is not allowed to specify anything else. The simulator builds all roads/park/water before the building for each move request, so there is no need to construct anything else until the next accepted building request. If the request is accepted, the player must specify a location for the building, which is a cell position for the top left corner of the building, and a rotation, which is an integer from 0 to 3 labeling one of the four 90 degree rotations the building can take. The player can then specify three sets of cells for locations to build roads/park/water. Sequencer The default sequencer generates random shapes for buildings and factories. Additional sequencer behaviors can be specified by creating a new folder within the main directory and implementing the "pentos/sim/Sequencer.java" interface. The sequencer contains an init() function which is called once at the beginning and a next() function which is called every turn. Simulator To run or compile the simulator, cd into the folder above pentos. To (re)compile the simulator on Unix & Mac OS X: javac pentos/sim/*.java To (re)compile the simulator on Windows: javac pentos\sim\*.java To run the simulator: java pentos.sim.Simulator <arguments> The simulator is written and tested using Java version 8 (jre/jdk 1.8). To check the Java virtual machine version: java -version To check the Java bytecode compiler version: javac -version Earlier versions of Java may (will probably) not work. The simulator is operating system (OS) independent and has been (successfully) tested on: Apple Mac OS X Yosemite (10.10) GNU/Linux Ubuntu 16.04 Microsoft Windows 10 (running through Cygwin) The simulator arguments are: -g, --groups <group name, e.g. g0> -s, --sequencer <folder name containing sequencer, e.g. random> --gui --verbose If the GUI option is enabled, the simulator creates a visualization of the game as a dynamic HTML page. To view the GUI, open the browser on localhost using the port displayed in a terminal message. For example, if the simulator shows port 54321 in the terminal, open the browser and use the address "http://localhost:54321" (or "http://127.0.0.1:54321"). Javascript must be enabled. The GUI uses HTML 5 canvas and the state updates use AJAX. Page reloads are supported (used when FPS is set to 0). ===================================== Additional: --stats <file_name> --repeats <number>