Enhancements

It is intended that enhancements will require some discovery and investigation on your part, a situation similar to what you would experience in the “real” world. Sources of information might include the web, JavaDoc for Java classes, and books.

Remember that you should not begin working on enhancements until you have the basic game working.

Finally, 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.

Enhancements worth 5%

  1. Figure out how to display images for various aspects of the game. You may do at most two of the following for 5% each:
  2. In the real game of Monopoly, rents are not based on a formula. Find the real values and have each property charge the correct rent.
  3. Allow a user to sell a property or houses back to the bank during their turn, recieving 75% of the original purchase price back.
  4. Improve the strategy of the computer players so that they play a smarter game in terms of when they buy property or houses. Make your changes in the ComputerPlayer class.
  5. Show the property-by-property movement of players on the board.
  6. Complete the dice-rolling rules: roll doubles and you can roll again, roll doubles three consecutive times and go to jail (requires that you implement jail). If you implement this, you must also implement a way to test it using UserInputDice.
  7. Implement a view which records, either in the user interface or in a file, all the significant events in the game.
  8. Give each property its appropriate color (but without implementing the rules for buying houses). Solve the problem of a blue token landing on a blue property (and a yellow token landing on a yellow property, etc).
  9. Convert five houses on a property into a hotel.
  10. Display a dialog box when a player can't pay rent asking if they would like to sell a house or a property or go bankrupt.
  11. Display a dialog box that announces the winner.

Enhancements worth 10%

  1. In the real game of Monopoly, building lots are grouped. They can't be developed until a single player owns all the lots in the group. Implement this rule and improve SquareView to show which properties belong in the same group.
  2. Allow a player to mortgage one or more properties during their turn. The player will receive money from the bank for the mortaged property. A mortgaged property cannot collect rent. To unmortgage the property, the player must pay the mortgage amount plus 10% interest. Either find the mortgage value for each property that the real game uses, or make up a value based on the purchase price.
  3. Implement three properties labeled “Chance”. A player landing on one of these properties has one of the following happen, with equal probability: For each of the “Advance to...” actions, the player may collect $200 if they pass Go.
  4. Using polymorphism, implement squares for at least three of the following (10% for doing 3, not 10% each):
  5. Implement a dialog box allowing the user to set game properties at start-up. You may do at most one of the following examples (or any other example you create):
  6. Display a video or play a sound file at some significant point in the game. An extra 5% is available if you develop the video or sound files yourself, rather than using files you find on the net.
  7. Allow a property to be auctioned off when a player lands on it but declines to buy it. This requires changes to the user interface to allow players to make and up their bids.
  8. Allow players to trade properties with their opponents. This requires changes to the user interface to allow players to specify what they want to trade and to either agree or disagree with the proposed trade.
  9. Implement several different strategies for the computer player. Your implementation must make appropriate use of polymorphism. At least one of the strategies must make a non-trivial analysis of the board to determine whether or not money should be spent on a property or houses.
  10. Learn how to use menus. Implement several commands such as a new game, saving a game, loading a game, buying a house, help, about, etc. You must have at least one menu and and at least three menu items. Implementing more will not count for extra marks.
  11. Implement your game as an applet that is playable over the Internet. (This enhancement is challenging. Begin by reading the information on making an applet.)

Enhancements worth 15%

  1. Figure out how to use a “cgi script” to save information from a monopoly applet to your web site. Use it to set-up a world-wide list of players with the highest net worth.

Enhancements worth 20%

  1. Improve your game so that two or more players can play over a network.