Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

Ask Computer Engineering Expert

ASSIGNMENT DESCRIPTION

This program will simulate part of the game of Yahtzee!

The player will roll five dice, and then have two chances to reroll any dice that are desired, and then the outcomes are evaluated.

The program must allow for further turns after each scoring opportunity.

The basic assignment does not need to keep score for further rounds -- that would be left as an Extra Credit feature.

A Yahtzee score card has two portions:

  • The upper portion has spaces for six scores, obtained by adding up all of the 1's, 2's, 3's, etc.
  • The lower portion has special scores for various combinations:
    • Three of a kind -- at least 3 dice are the same number;
      the score is the sum of all five dice
    • Four of a kind -- at least 4 dice are the same number;
      the score is the sum of all five dice
    • Small straight -- four consecutive numbers are represented, e.g. 2345;
      the score is 25 points
    • Large straight -- five consecutive numbers are represented, e.g. 23456;
      the score is 30 points
    • Full House -- three of one kind, two of another; the score is 30 points
    • Yahtzee! -- five of a kind; the score is 50 points
    • Chance -- nothing special; the score is the sum of all five dice

Here are some sample results from the instructor's solution.
For readability, I put the upper and lower portions side by side.
The random number generator was being especially friendly today.

Rolling 5 dice: 3 5 4 2 2
Enter dice to reroll (e.g. 15 rerolls a 1 and a 5); 0 to quit: 2
Rerolling 1 dice: 6
Enter dice to reroll (e.g. 15 rerolls a 1 and a 5); 0 to quit: 0

                 Three of a Kind   0
Sets of 1's: 0   Four of a Kind    0
Sets of 2's: 2   Full House        0
Sets of 3's: 3   Small Straight    25
Sets of 4's: 4   Large Straight    30
Sets of 5's: 5   Yahtzee           0
Sets of 6's: 6   Chance            20

Another (y/n)? y
Rolling 5 dice: 1 4 1 1 2
Enter dice to reroll (e.g. 15 rerolls a 1 and a 5); 0 to quit: 24
Rerolling 2 dice: 6 1
Enter dice to reroll (e.g. 15 rerolls a 1 and a 5); 0 to quit: 6
Rerolling 1 dice: 1

                 Three of a Kind   5
Sets of 1's: 5   Four of a Kind    5
Sets of 2's: 0   Full House        0
Sets of 3's: 0   Small Straight    0
Sets of 4's: 0   Large Straight    0
Sets of 5's: 0   Yahtzee           50
Sets of 6's: 0   Chance            5

Another (y/n)? y
Rolling 5 dice: 6 6 4 4 4
Enter dice to reroll (e.g. 15 rerolls a 1 and a 5); 0 to quit: 0

                 Three of a Kind   24
Sets of 1's: 0   Four of a Kind    0
Sets of 2's: 0   Full House        30
Sets of 3's: 0   Small Straight    0
Sets of 4's: 12  Large Straight    0
Sets of 5's: 0   Yahtzee           0
Sets of 6's: 12  Chance            24

Another (y/n)? n

PROGRAM DESIGN HINT

The order in which the dice were rolled is never relevant in this game. What does matter is how many 1's, 2's, 3's, were rolled. Array usage should be designed with this fact in mind.

A SPECIAL PROGRAMMING TIP

This little tip is not at all required for the assignment, but ends up being helpful, especially for those pursuing the extra credit. There are several different ways of evaluating the dice rolls above. It does help to have functions for those evaluation methods -- but it may seem a little awkward calling them for the output display.

Certainly you could do an if statement or a switch statement to say something like "on row 1, evaluate for 3 of a kind; on row 2, evaluate for 4 of a kind;", etc. but it turns out an array can even be used here!

Unfortunately an array of functions is not quite correct -- different functions might have different amounts of code, so they would not all be the same size. But pointers (which we will see later) are all the same size, and may make suitable array elements.

Here are a few lines of code from the instructor's solution:

const char nameLower[7][16] = { "Three of a Kind", "Four of a Kind", "Full House",
        "Small Straight", "Large Straight", "Yahtzee", "Chance" };

int (*scoreLower[7])( int[] ) = { threeOfaKind, fourOfaKind, fullHouse,
        smallStraight, largeStraight, yahtzee, chance };

      cout << setw(18) << nameLower[i] << scoreLower[i](counts) << endl;

The first array declaration is much like one seen before.

The second defines an array of 7 elements, each of which is a pointer to a function that accepts an integer array as a parameter. (Function prototypes for all of them would appear before this statement).

The last line above shows both arrays being subscripted, and that the function is being passed an array parameter (here named counts).

Again: This is not required for the assignment; feel free not to do it!

EXTRA CREDIT OPTION


Actually keep score for an entire solitaire came of Yahtzee!

This game would consist of 13 turns (there are 13 categories to score).

After displaying the possible scores for each category, ask the user which score to keep (it might not be the largest). Once the box is filled, it cannot be scored again.

It would be very helpful to have the display somehow indicate which boxes have already been filled, and which scores are available.

In addition, there are these things to note about the score:

  • There is a bonus score of 35 points if the upper half scores add up to more than 63. You can display this below those upper scores; it would also be nice to have a total score for everything (which can be placed under the lower scores).
  • If a player rolls a Yahtzee! and has already scored 50 points for Yahtzee, they may instead score 50 points in any of the other lower-score boxes, in place of the regular scoring mechanism. However, this cannot be done if a 0 has already been placed in the Yahtzee box (or if that box is empty).

Of course, on the 13th round, when there is only one unscored box, there should be no need to ask the user where to place that last score.

With this Extra Credit option, a player should be able to play a complete game solitaire.

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M9901649

Have any Question?


Related Questions in Computer Engineering

Answer the following question take a cube graph q3 and add

Answer the following Question : Take a cube graph Q3 and add both face diagonals to one of the cube faces. The resulting graph is not planar, so by Kuratowski's theorem it contains a subdivision of K5 or of K3,3. Draw th ...

Question how will you create the cicd process for this

Question: How will you create the CI/CD process for this application? Propose the tools, technologies required to achieve CI/CD in general. The response must be typed, single spaced, must be in times new roman font (size ...

Question discuss in 500 words or more why oracle 12c has

Question: Discuss in 500 words or more why Oracle 12c has introducted two new roles - AUDIT_ADMIN and AUDIT_VIEWER. Include a discussion of what database auditing is and what it does. The response must be typed, single s ...

Part 1 if false change the incorrect parts to make them

Part 1, If false, change the incorrect parts to make them true. DO NOT NEGATE THE FALSE SENTENCES. 1. According to the weak-form efficient market hypothesis, investors can take advantage of historical information. 2. The ...

Use the management studio to create a new database called

Use the Management Studio to create a new database called the default settings(If the database already exists, use the Management Studio to delete it and than create it.

Question what is an information system what are the

Question: What is an information system? What are the business benefits of information management? The response must be typed, single spaced, must be in times new roman font (size 12) and must follow the APA format.

What is equi-marginal principle why does it have to be true

What is Equi-marginal principle? Why does it have to be true at interior optimum?

Calculate the present worth of all costs for a newly

Calculate the present worth of all costs for a newly acquired machine with an initial cost of $30,000, no trade-in value, a life of 15 years, and an annual operating cost of $13,000 for the first 4 years, increasing by 1 ...

How do you apply the five components of the information

How do you apply the five components of the information systems to an information systems application like "online bill pay" system offered by many banks.

Two one-cent coins were weighed on an electronic balance of

Two one-cent coins were weighed on an electronic balance of high sensitivity, and an average mass per coin of 2.4918 g was obtained from the data. How could you use the same number of significant figures as the value obt ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As