Skip Site NavigationCarleton College: Home
 
 

Overview

This is an individual project.

Create a computer game. This can be entirely text based, or you can do some graphics with Canvas or EzImage if you like. No graphics are required or necessary, though, as I'm more interested in seeing how much you've learned about how to get the computer to do the algorithms that you want.

It would be particularly neat if your project could incorporate some level of computer intelligence. In some sense, the computer should play against you or manage your game in some kind of intelligent way. You don't need to get the computer to be a world class player at your game, or even close, as that's what my course in Artificial Intelligence class is for, but some sort of effort here could really pay off.

The choices for games are endless. A few suggestions to get you started are Bagels (see description at the bottom of this document for details), 3D Tic-Tac-Toe, Dots and Boxes, Battleship, and Go Fish, to name a few. Poker is way too complex if you are going to consider any kind of computer intelligence. Regular Tic-Tac-Toe makes for too simple a project. You'll find a list of past projects at the end of this assignment.

In the past, the biggest trap that students have falled into this assignment is picking something too complex and not having the time to finish it. That's why I'm asking you to submit a design document describing what your project will do. The more detail you provide, the better the graders can help direct you in the appropriate direction.

Make sure to indicate in program documentation which class contains your main method so that I know how to run it.

Thoughts on grading

I will grade the projects based on the following factors, in the following order:

  1. How cleanly the program runs: is it bug free? Does it crash?
  2. Complexity: a chess program is clearly cooler than a program that flips a coin.
  3. Style.

The first factor above is most important. A program that runs correctly, error-free, and achieves the above specifications will earn a better grade than an incredibly smart chess program that crashes and provides unreadable output. Of course, given two programs side-by-side that run perfectly, the one that accomplishes more will receive the better grade.

To reiterate: It is most important to submit something that works. Set modest goals and achieve them first, then enhance your program later. Only work on getting computer intelligence working after you have the basic game working with human player(s).

On academic dishonesty: You must submit a program that you write yourselves. You may obtain help from other students in getting ideas and in debugging your code, but you must write your own program. You may not use Java code for your game from the Internet or from other sources. Make sure to reread the section of the course syllabus regarding "collaboration, plagiarism, and the difference between the two."

Submission schedule

On Saturday, May 19, you should turn in a design document describing what you wish to do for your project. This should contain a description of the game that you will implement, and a careful description of the algorithms you hope to implement. We will not be grading this for correctness, but rather to help you do a better job at getting your project done. The more info you provide, the better we can do at helping to steer you in the right direction.

After the design document is due, I would like you to submit brief progress reports (due Wednesday, Saturday, Monday, etc., until the end of the term) describing how the project is going. These do not need to be long, but are there to encourage you to be working on the project. These will be graded based on whether or not you do them.

The submission is due by 11:55 PM on May 29. On the last day of class (May 30), there will likely be no lab assistants that night, and the labs will likely be closed. I CANNOT GRANT AN EXTENSION BEYOND THE LAST DAY OF CLASS UNDER ANY CIRCRUMSTANCES. It violates the letter and spirit of College policy if I allow you to be working on your project during the final exam period.

The final submission

In addition to submitting your java files, you should submit the following items of documentation in a readme.txt file that is in your directory. You may be brief.

  • A description of your program and its features.
  • A brief description and justification of how it is constructed (classes, arrays, etc.)
  • A discussion of the current status of your program, what works and what doesn't, etc.

Rules for Bagels

Bagels is a two person paper-and-pencil game that is similar to but simpler than Mastermind. One person thinks of a 3-digit number, and the other person tries to guess it. The 3-digit number may have no repeated digits, but it may begin with a zero (so 012, 987, and 361 are legal, but 112 and 303 are not).

The Guesser makes a 3-digit guess. The Responder compares the guess to the actual mystery number, and responds to the guess by some combination of the words "Pico," "Fermi," and "Bagels." The Guesser keeps guessing until the guess is the mystery number. Here are the response rules:

  • If the guess has no digits in common with the mystery number, the answer is "Bagels" or "B."
  • If the guess has a digit in common with the mystery number, and the common digit is in the same position in both numbers, the responder says "Fermi" or "F."
  • If the guess has a digit in common with the mystery number, but the common digit is not in the same position in both numbers, the responder says "Pico" or "P".
For example, suppose the mystery number is 395. Here are a few guesses and responses:
    246    B

    037    P

    105    F

    309    PF

    etc.
Note that if there are Picos and Fermis in the same response, all the Picos should be reported first. That is, you'd never say "PFP," thus suggesting that maybe the middle digit of the guess was the one in the correct position. Instead, you'd say "PPF," regardless of which digit was the Fermi, and which two were the Picos.

If you want more clarification of the rules of Bagels, let me know.

If you choose this project, you can add intelligence by writing a program that will play Bagels with you, both as the Guesser and the Responder. Having the computer act as Responder is fairly straight-forward. Having it act as Guesser is trickier, but fun.

Previous games by other students

  • Bagels
  • Battleship
  • Boggle
  • Chinese Checkers
  • Clue (this was really complex)
  • Connect Four
  • Dots and Boxes
  • Gin
  • Go Fish
  • Mancala
  • Mastermind
  • Othello
  • Scrabble
  • Parcheesi
  • Wordsters

This is your chance to show some creativity. Have fun!

Available from: Wednesday, May 16 2007, 08:50 AM
Due date: Saturday, May 19 2007, 11:55 PM