Deck of Cards: Program 3–Spring 2016 1 Goals 2 Overview 3 an Enum Type and a Class 4 Implementation

Deck of Cards: Program 3–Spring 2016 1 Goals 2 Overview 3 an Enum Type and a Class 4 Implementation

Deck of Cards: Program 3{Spring 2016 CSCI 6610 1 Goals • To write a simple C++ program that includes a class. • To use an enumerated type (not an integer code) inside an object. • To use an array of objects. • To use an output file. • To create a standard deck of 52 cards. 2 Overview Cards. Many games are played with a deck of cards. Decks come in many varieties, specialized for particular games. In this project, however, we will focus entirely on the standard 52-card bridge deck with four suits (spades, hearts, diamonds, and clubs) and 13 cards in each suit (1 to 10, jack, queen, and king). The 1 is often called an \ace". This is a 2-phase program. In the first phase (program 3), you will generate a deck of cards, store the cards in an array, and write them to an output file. In the second phase (program 5), you will read the file into an array of Cards, shuffle the Cards and print the deck again. The algorithm used gives a fair random shuffling order. Please, DON'T complicate this, and do only the first part of the task. It should be a very short and simple program. 3 An Enum Type and a Class • Define an enumerated type named SuitT that lists a constant meaning \suit unknown", fol- lowed by the four suits of a card deck. Use UPPER CASE for constants in your enumeration. • Global constants are OK, but be sure that you do not use global variables in your code. Copy these global CONSTANT declarations at the top of your file. They define the point values and names for the suits and ranks. (Note: slot 0 of each array is unused.) const int points[] = f0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10g; const char* suits[] = f"Unknown","Spades","Hearts","Diamonds","Clubs"g; const char ranks[] = f"-A23456789TJQK"g; • Define a class named CardT that represents a playing card. Your type should have three data members, a suit (represented by an enum constant), a rank (represented by a character from the ranks array), and a short int point value. The class definition should be in a file named card:hpp, not in the same file as main(). 4 Implementation. In main() Do the following things in your main program: • Use banner, bye, and fatal, where appropriate. Deck of Cards: Program 3{Spring 2016 CSCI 6610 2 • Declare a an output stream and an array of 52 CardT to hold the cards. • Write nested for loops to generate 52 cards, in order. The outer for-loop will cycle through the four suits. • The inner for-loop will cycle through the 13 ranks for each suit. Each time around the loop, construct one card and store it in the array. • To convert an int to an enum constant, use this: (SuitsT)k where k is the loop variable of the outer loop. To convert an enum constant to an int, use this: (int)Spades . • When all the cards have been generated, loop through the array again and display the cards to the screen using print(cout). At the same time, write them to the output file using print(myout). In your CardT class Define these functions • CardT::CardT( )fg This is a do-nothing constructor (a null constructor). You need it to create an array of CardT. • CardT::CardT( SuitT suit, int rank ) Initialize the data members corresponding to the two parameters and use the rank to compute the value for the points, using the global constant array of point values. • Since there are no dynamically allocated parts in a CardT, the default destructor is appro- priate. Declare this fact. • void print ( ostream& out ) Print the card's data members (suit, rank, and point value) to the stream out. Print this in a readable format such as \Q Hearts: 10". Use setw() to make things line up in neat columns..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    2 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us