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%
- Figure out how to display images for various aspects of the game. You may
do at most two of the following for 5% each:
- Add a logo or design to the centre of the board.
- Improve
SquareView
to display icons of houses
rather than just the number of houses.
- Use an image for the player tokens.
- Add images to the views for various properties.
- 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.
- Allow a user to sell a property or houses back to the bank during
their turn, recieving 75% of the original purchase price back.
- 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.
- Show the property-by-property movement of players on the board.
- 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
.
- Implement a view which records, either in the user interface or in a
file, all the significant events in the game.
- 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).
- Convert five houses on a property into a hotel.
- 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.
- Display a dialog box that announces the winner.
Enhancements worth 10%
- 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.
- 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.
- Implement three properties labeled Chance. A player landing on one
of these properties has one of the following happen, with equal probability:
- Pay a poor tax of $15.
- Advance to Boardwalk. (If it's owned, pay rent. Otherwise, the
player may buy it.)
- Advance to St. Charles Place.
- Advance to the Reading Railroad.
- Advance to Illinios Avenue.
- Advance to Go.
- Deduct $25 for each house and $100 for each hotel the player owns from the
player's bank balance.
- The bank pays the player a dividend of $50.
- Move the player back three spaces.
- The player pays $50 to each of the the other players.
For each of the Advance to... actions, the player may collect
$200 if they pass Go.
- Using polymorphism, implement squares for at least three of the following (10% for doing
3, not 10% each):
- Income Tax (deduct $200 or 10% of the player's net worth, which
ever is larger, from the player's bank balance).
- Luxury Tax (deduct $75 from the player's bank balance).
- Go to Jail and Jail (counts for two of the three required
squares). A player landing on the former is moved to the latter. Make up some reasonable
rule to get the player out of jail. For example, the player must roll doubles on his/her
next turn to get out of jail. If the player
is still in jail after the third try, he/she must pay $50 to get out.
- Free Parking.
- Utilities.
- 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):
- the name of each player
- whether the player is played by a human or the computer
- a computer strategy level
- 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.
- 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.
- 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.
- 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.
- 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.
- 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%
- 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%
- Improve your game so that two or more players can play over a network.