Computer Science 15-100 (Lecture 18), Spring 2009
Homework 9
Due:  Thu 2-Apr-2009 at 11:59pm (email copy) and at Friday's class/recitation (identical physical copy)
(no late submissions accepted).


Read the instructions from hw8 first (changing "hw9" for "hw8" where appropriate), except that there will not be a mastery quiz on this assignment, but rather a "normal", comprehensive quiz (so grading is 15% style and 85% correctness on this hw).

Note: 
One-on-one tutoring is not required this week, but...  You are very strongly encouraged to continue meeting with CA's one-on-one as needed.  We are here to help, but you have to ask for it!  And there is no better way to learn -- generally, no other studying technique has a higher return on investment than meeting one-on-one with your CA or instructor!  Learn more with less effort.  What a deal!!!


  1. Adventure Game
  2. Bonus/Optional:  More Adventure Game

  1. Adventure Game
    Start with this file:  Hw9AdventureGame.java
    As it is, this is the adventure game exactly as we wrote it in class.  Using this basic approach, you are to write a complete adventure game.  To help set expectations, this should require at least 5 hours (and perhaps several more) of your time.  You must also include a file, Hw9AdventureGameReadMe (as a txt, doc, pdf, or html file -- no other file types accepted!) that describes the basic design of your game and, in particular, describes how to win the game (and, yes, every game must have a way to win and a way to lose), as well as any additional features you may have implemented (see below for details).

    Note: you are also responsible for all the code in the Hw9AdventureGame.java file that we wrote in class.  In particular, you should study the 5 different classes we created, and be sure to understand how each one works, and to also be sure to understand how to declare and allocate arrays of objects and how to declare, allocate, add to, and remove from ArrayLists of objects.

    Here are the (non-style-based) grading criteria for this question (note:  these criteria are subjective; there's really no other way, as you are creating something that is half technical, half artistic -- this being a programming class and not a creative writing class, we won't require stunning works of art to receive an A, but we will require at least some modest creativity and cleverness):
    1. To receive at least a D, your code must:
      1. Compile correctly and run the basic command loop without errors
      2. Include the ReadMe file as described above
      3. Include at least 2 new rooms, 2 new objects, and 2 new verbs
      4. Make at least some sense (objects must relate to each other, verbs must make sense for those objects, etc).
      5. Be winnable and losable
    2. In addition, to receive at least a C, your code must:
      1. Include at least 3 new rooms, 3 new objects, and 3 new verbs
      2. Include at least 1 new feature, such as:
        1. weight for objects (so only so many objects can be picked up)
        2. food / hunger (weakened state) / starvation
        3. roaming monsters (or any objects that change location meaningfully during the game)
        4. save game and load game
        5. a timer (so some actions have to be made quickly)
        6. or any other interesting feature of your design (be sure to document this in your readme file!)
      3. Clearly reflect at least 5 hours of effort
      4. Have more sense of an actual story, or a plot, or a theme, or a problem to solve.  It must make sense and be at least mildly interesting.
      5. Be fairly grammatically correct (this is interactive fiction, after all, so your writing does matter!) and fairly bug-free (this is software, after all, so your Java does matter, too!).
    3. In addition, to receive at least a B, your code must:
      1. Include at least 4 new rooms, 4 new objects, and 4 new verbs
      2. Include at least 2 new features (such as those described above)
      3. Have a clear story/plot/theme/problem to solve and be reasonably engaging.
      4. Be almost entirely grammatically correct and bug-free
    4. In addition, to receive an A, your code must:
      1. Include at least 5 new rooms, 5 new objects, and 5 new verbs, and as many more as are needed to make your game compelling.
      2. Include at least 3 new features (such as those described above)
      3. Be well-written, creative, and interesting (as much as can be expected with 5 hours of effort).
      4. Require at least some modest cleverness on the player's part in order to win (again, as much as can be expected with 5 hours of effort).
         
  2. Bonus/Optional:  More Adventure Game
    If you complete the adventure game to an "A" level as just described, you may continue working on the game for additional bonus (where 10 hours of well-crafted bonus work equals a 1% increase of your semester grade).  If you are interested in this bonus, you must first submit your game to your CA or instructor to get verification that it meets the criteria for an "A".  At that point, you should not modify your Hw9AdventureGame.java file, but instead you should copy the game to a new file, Hw9BonusAdventureGame.java.  All your bonus work goes in that new file.  In the new file header, include a timesheet logging your bonus time (which does not include the time you spent prior to the bonus on the Hw9AdventureGame.java file).  Once approved for bonus, you may invest up to 10 additional hours before requiring additional approval (if you care to invest even more time than that).  To receive full credit for your time invested, your game must reflect that time invested (more or less), and your game must be (almost entirely) bug-free, complete, and playable.  Be clever!!!  Be creative!!!  Have fun!!!

Carpe diem!