The Final Project

Due Wednesday, March 31, 8:30am

Overview

Your final project is to implement and enhance the game of Monopoly. Code for a very simple user interface is provided. Your first job is to write the logic for the game so that the game is playable with the given user interface. After the game is working, you may add some enhancements for additional marks. A Show and Tell in Practicum 12 will allow you to show off your creativity and earn even more marks.

There are a number of deadlines to meet before the final due date:

Milestone Requirements
M1: End of Practicum 06
  • Have a team of 2-4 people identified.
  • Hand in lists of candidate classes, methods, and use cases.
  • M2: End of Practicum 07 Hand in a UML class diagram showing the inheritance hierarchy of your classes.
    M3: Wednesday, March 10 at 10:00pm Submit code which passes all of the tests in Monopoly.main -- the main method in the Monopoly class -- except for the last test which involves loading a game from a file.
    M4: Monday, March 15 at 10:00pm Submit code which passes all of the tests in Monopoly.main (including the test which involves loading a game from a file) as well as at least three additional tests for use cases you identified in Pra 06. Add your additional tests after the existing tests and clearly indicate in your description for each test that it is an additional test.
    M5: Monday, March 22 at 10:00pm Submit code which plays a legal game with the provided user interface.
    M6: Wednesday, March 31 at 8:30am Final submission of your project.
    Practicum 12 (Optional.) Participate in the Show and Tell. Extra marks are available.

    Monopoly

    You are to implement a much simplified version of Monopoly, a board game invented in the 1930's and trademarked by Parker Brothers. An example using these simplified rules and the provided user interface is available here. The rest of this description corresponds to the simplified version you are to implement, not the trademarked game.

    Object of the Game

    The object of the game is for each player to accumulate wealth at the expense of the other players. Wealth is accumulated mainly by purchasing property and charging “rent” to the players that land on it. Many properties can be improved by adding houses, thereby increasing the rent charged.

    Setup

    There are three kinds of properties: building lots (they can have houses added to them to increase the rents), railroads, and a special property named “Go”. They are arranged around the perimeter of the board in the order shown in the sample solution.

    The game is played by four players, at least one of which is played by a real person interacting with the game through the user interface and at least one played by the computer. Each player begins with a bank balance of $1,500 and owns no properties. Each player has a token marking their position on the board. All players begin the game on “Go”.

    Play

    Each player takes a turn rolling a pair of 6-sided dice and moving their token clockwise around the board by the number of properties rolled. If the player rolls a value of n, we say the player lands on the nth property and passes the 1st..n-1st properties.

    When a player lands on a property, there are several possible actions the happens:

    If, at any time, either due to purchasing properties or houses or paying rent, a player's bank balance becomes negative, that player is bankrupt. Bankrupt players are out of the game. They may not have any more moves and may not collect money by passing “Go”. Properties they own are again put up for sale to other players who land on them.

    The net worth of a player is calculated as the purchase price of all the properties they own plus the purchase price of all their houses plus the value of their bank balance (their cash on hand). A player with a large net worth may still become bankrupt because there is no provision for selling property to convert it to cash.

    The game is over when all the players but one have gone bankrupt or there is mutual agreement to stop. In either case, the player with the largest net worth who has not gone bankrupt wins the game.

    Enhancements

    Getting the game to work as displayed in the sample solution accounts for 55% of your final mark. Another 15% is covered by design work and being able to initialize your game from a file. The remaining 30% is earned via enhancements. Enhancements are improvements to the game to make it look better, work better, or play a better game of Monopoly.

    A list of suggested enhancements is available here. You are strongly encouraged to dream up enhancements that you want to implement. Send e-mail to Lino Demasi before you start to make sure your idea is possible and of sufficient complexity to qualify for the extra marks.

    The full rules to the game are available at http://www.centralconnector.com/GAMES/MONOPOL.html. They provide many ideas for additional enhancements.

    You should not implement any enhancements until after you have the game working correctly with the provided user interface. Don't get distracted before your most important work is finished!

    Submission and Marking

    Submission

    Create a zip file called project.zip that contains everything needed to run your program. Look here for instructions on how create a zip file.

    For Milestone M3 (deadline of Wednesday, March 10) submit your project.zip file using the assignment code of projM3.

    For Milestone M4 (deadline of Monday, March 15) submit your project.zip file using the assignment code of projM4.

    For Milestone M5 (deadline of Monday, March 22) submit your project.zip file using the assignment code of projM5.

    For Milestone M6 (final deadline of Wednesday, March 31) submit your project.zip file using the assignment code of projM6.

    Interview marking

    Interview marking will be held in the labs on Thursday, April 1st and Friday, April 2nd. Once you have registered your team, you should sign up for a time on one of those days to have your project marked. Do not modify your project after the submit deadline. File modification dates will be checked.

    Marking Scheme

    Percent Requirement
    5% M1: Candidate classes, methods, use cases from P06.
    5% M2: UML class diagram of the inheritance hierarchy of your classes from P07.
    5% M3 and M4: Code submitted that passes appropriate test cases.
    5% M4 and M6: Being able to initialize a game from a file.
    50% M5 and M6: Code submitted which plays a legal game with the provided user interface, as outlined above. Markers will look for:
    • Appropriate use of inheritance and polymorphism.
    • Use of arrays rather than ArrayList or similar classes (you need the practice!). Appropriate use of partially-filled and full arrays.
    • Appropriate documentation in JavaDoc style.
    30% Other enhancements.
    10% bonus Bonus enhancements and/or participation in the Show and Tell.

    Remember that groups of 4 must do an extra 15% of enhancements!

    Show and Tell

    1.02 Demonstrated their program
    1.05 Third place finish
    1.07 Second place finish
    1.10 First place finish

    In the normal practicum meeting time for Practicum 12 there will be a “Show and Tell” where each team has 3 minutes to show off their creation. All class members from that section (but not course staff) will be eligible to vote for the best program based on the demonstrations. Teams will have their project marks multiplied by the constants shown on the right but in no case will a team receive a mark larger than 110%.

    Think ahead about what you should stress; what sets your program apart? Plan how you will show off your program. For instance, if strategy is your forte, have an initialization file ready to go which will show your strategy in action. If you have a really cool end-of-game announcement, have an initialization file for a game that is very nearly finished.