SAMPLE FINAL PROJECT PROPOSAL FOR [name]: ROLL-A-RAINBOW 1. Project Overview For my final project I have decided to make a computer program that emulates the dice game Roll-A-Rainbow. Roll-A-Rainbow is a game that you play with 6 dice, where each die has a different color on each face (red, green, blue, purple, yellow, orange). The rules are as follows: 1. Roll all 6 dice 2. Pick the best color combinations (see below) 3. Roll remaining dice, up to two or three more times, to get an even better score. You have three rolls of the dice for each turn. 4. As long as you are making points keep the dice and take another turn. 5. Player scoring 100 points wins the game. If score goes over 100 points, subtract 100 points from score and continue playing. Color combinations are: 6 of a color -- player wins Rainbow (1 of each color) -- 50 points 5 of a color -- 40 points 4 and 2 of a color -- 30 points 3 and 3 of a color -- 20 points 2 and 2 and 2 of a color -- 10 points 2. Code Outline In order to implement this program I plan to make the following functionality: Die -- randomly picks a die color and returns this color Player -- A class to deal with everything related to a single player in the game. The instance variables include the player's current score, which the constructor will initialize to zero, and the player's name, which the game will display. The class' primary methods are accessors and mutators for these instance variables. RollARainbow -- a function to play the main game, and it will contain all of the game logic. It will have variables for: a. two player objects b. six dice, stored in a list Inside this function a loop will execute the turns, alternate between players, keep score, and determine when someone has won. As part of executing a turn it will roll the six dice, handle re-rolls of the dice, and tally the score for this round for one player. There will be a separate function (evaluate) that takes a list of dice colors as a parameter, looks at the roll to see what color combinations exist, and returns the appropriate score. 3. Development/Test Plan In order to create this program I will write and test the components in the following order: a. Die -- make sure I can simulate rolling dice and display different colors. b. Player -- make sure I can instantiate several Player objects, modify their instance variables, and print out the current values of the instance variables. c. RollARainbow -- because this component is more complex, I will break it into several parts: * turn: make sure I can execute a turn correctly for a single player * evaluate: make sure that the score for a single turn is properly computed and that the correct pattern on the dice is detected * play: execute one turn for both players first. Once this is working, implement the rest of the game logic. 4. Minimal Features and Extras At the least the program will be a text program that emulates Roll-A-Rainbow with all of the rules stated above, however it is my goal to make a graphical version. Ultimately, I would like the graphical version to look like the picture below: [picture omitted]