CS 61B: Data Structures (Spring 2014)
Enter the Network Tournament!

The Network tournament will take place on Monday, May 5 from 7:00–10:00 pm in 306 Soda Hall. The winning team will receive gift certificates to Amoeba Records. Nobody is required to enter the tournament, but we welcome all with working players to submit. You are welcome to make improvements to your MachinePlayer that were not in your original Project 2 submission, but if you don't, please give it a shot anyway.

The “official” deadline for submission is the day before the tournament. Late submissions will probably be accepted, but there are no guarantees. Submissions after the tournament will not be eligible.

Submission

To prevent your submission from conflicting with other competitors' submissions, we want you to put MachinePlayer.java and all the .java files your MachinePlayer needs (except Player.java and Move.java) into one package, called cs61b** (replacing the asterisks with your submitting partner's login id, and dropping the hyphen). This includes .java files in the list package or other packages. (These are the files that are most likely to conflict.)

Make sure that cs61b** does not contain Player.java or Move.java. These two files should remain in the player package. Every team's submission will share the same copies of Player.java and Move.java. Since you can't change them, you can't submit them, but you should keep them in the player package so you can test that your MachinePlayer compiles correctly.

You will need to change all the files in the cs61b** package to include the line “package cs61b**;” (replaced with your login id). If you want to have a list package inside the cs61b** package, its files should include the line “package cs61b**.list;”. Packages that call that package will need to “import cs61b**.list;”.

Also, you will need to add the lines “import player.Player;” and/or “import player.Move;” to any file that refers to the Player or Move classes. (Avoid using “import player.*;”, as that can cause compilation problems due to conflicting MachinePlayer classes.) Make sure that none of your .java files imports any package outside cs61b**, except player or packages in the standard Java library.

Once you've made these changes, make sure that your MachinePlayer still compiles.

javac -g cs61baa/*.java or, if you have packages, javac -g cs61baa/*.java cs61baa/*/*.java
Then, make sure it still runs. (See instructions below.)

Next, pick a team name. Write a GRADER file with your team's name at the top. You may also include details of your implementation (e.g. evaluation function, search depth, how the early moves are chosen, other special tricks). You're not required to include anything more than your team's name, but if you win the tournament we'll be asking how your MachinePlayer works.

Then submit by typing

submit tourny

Pitting MachinePlayers Against Each Other

To help you compare different strategies, you can pit two different MachinePlayers against each other. First, put each one in its own, differently-named package, as per the instructions above. For instance, one might be in the “cs61byi” package, and one might be in the “cs61bxq” package or even in the “player” package. Both MachinePlayers must use the Player and Move classes in the player package.

With Network.class in your pj2 directory, run

java Network cs61byi cs61bxq "Team America" Annihilators
replacing the two ids with the names of the two packages you want to see compete. Either of the two ids can also be replaced with “human” (a human player), “random” (a random player), or “machine” (the MachinePlayer in the player package), as usual. The team names are optional, and the quotes are only necessary when you want a space or another difficult character in a team name.

You can also put a “-q” switch right after the word “Network”, which causes Network to quit immediately when the game ends. This can be useful for batch testing.

Dedicated Machine for Timings

Instructional Computing has made the machine cube.cs.berkeley.edu available solely for the tournament, and for figuring out how much your MachinePlayer can accomplish within the five-second limit. It is available for login to cs61b accounts only. Please do not use the machine for any other purpose than to time your one-parameter MachinePlayer and ensure that it always returns a move within the five-second limit. Please do not run text editors, the Java compiler, or anything but your game-playing software on cube.cs.berkeley.edu.

If something doesn't work as I've advertised, please let me know.


Mail inquiries to cs61b@cory.eecs