2D RPG Design (OOD)

Your solution to this assignment may be in the form of narrative (describing the behaviors and attributes) or more code-based definition of classes (with constructors, attributes, methods, etc.).  The goal is to as accurately as possible define the system to enable the following basic functionality (though you may do more):

  1. Store information about the player character/avatar including health, items/inventory, and attack/defense statistics.  Multiple classes/races/professions are not required, but a good design should accommodate character customization easily.
  2. Map information.  Locations should be passable and impassible, contain items, contain monsters, possibly warp to other locations, etc.
  3. Monsters.  They should have behaviors such as aggressive and defensive, movement, etc.
  4. Items
  5. Containers (bags, packs, etc.)
  6. Non-player characters that the user/player can talk to.  Conversation threads and interaction should be supported.

Be as detailed as possible so that you can easily implement this design later as the semester progresses.  Also remember that you should use good object-oriented design principles like inheritance and polymorphism in your solution to this assignment.