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

The Network tournament will be held Tuesday, May 3 at 6 pm in 306 Soda Hall. The winning team will receive gift certificates to Amoeba Records. Nobody is required to enter the tournament, but we would like to encourage as many of you to submit as possible. 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, if Chen has time to incorporate them, but there are no guarantees. Submissions after the tournament obviously will not be accepted.


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;".

Also, you will need to add the line "import player.*;" to any file that refers to the Player or Move 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
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, a new version of Network.class is available in the Project 2 directory. You will also need to grab the new versions of the files X1.class through X7.class in the Project 2 network directory. (Actually, I think I only changed X3.class, but I won't swear by it.) To pit two MachinePlayers against each other, you must first put each one in its own, differently-named package. For instance, one might be in the "cs61byi" package (as per the instructions above), 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 the new Network.class in your pj2 directory (and the new X?.class in pj2/network), 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). 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 a special machine named sphere.cs.berkeley.edu available solely for the tournament, and for figuring out how much your MachinePlayer can accomplish within the five-second limit. It's available now for login to cs61b accounts only. Please do not use sphere 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 sphere.

If something doesn't work as I've advertised, please let me know. (I can't test the "submit" configuration file until somebody tries it.)

Mail inquiries to cs61b@cory.eecs