C++ Edit code | Unix Linux Forums | Programming

  Go Back    


Programming Post questions about C, C++, Java, SQL, and other programming languages here.

C++ Edit code

Programming


Closed Thread    
 
Thread Tools Search this Thread Display Modes
    #1  
Old 02-04-2013
ment0smintz ment0smintz is offline
Registered User
 
Join Date: Sep 2012
Last Activity: 29 August 2014, 1:10 AM EDT
Posts: 37
Thanks: 12
Thanked 1 Time in 1 Post
C++ Edit code

Hi guys,

I am learning C++ on my own and i wanna redit the code using classes and heritance to revamp the code below.
example class for the card attributes -suit , - rank, - face
and also class deck to contain shuffle
and a class player with the function to setcard and a function handonecard from the deck.
do share your knowledge with me thanks


Code:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
#include <windows.h>

using namespace std;

struct Card {
    char *face;
    char *pix;
    char *suit;
    };

typedef struct Card card;

void fillDeck(card *, char *[], char *[], char *[]);
void shuffle(card *, int);
void deal(card *);
void WaitKey();

int main()
{
    int shuffled = 1250;
    card deck[52];
    char *face[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    char *pix[] = {"\x03","\x05","\x04","\x06"}; // - Added to original program
    char *suit[] = {"Hearts","Clubs","Diamonds","Spades"};
    time_t t;
    srand((unsigned) time(&t)); // Randomize using time
    cout << "PokerGame Options:" << endl;
    fillDeck(deck, face, suit, pix);
    shuffle(deck, shuffled);
    deal(deck);
    printf("\n\n\t");
    WaitKey();
    return 0;
}

void fillDeck(card *wDeck, char *wFace[], char *wSuit[], char *wPix[])
{
    int i;

    for (i = 0; i < 52; i++)
    {
        wDeck[i].face = wFace[i % 13];
        wDeck[i].pix  = wPix[i / 13]; // Added
        wDeck[i].suit = wSuit[i / 13];
    }
}

void shuffle(card *wDeck, int shuffled)
{
    int i, j, x;
    Card temp;
    for (x = 0; x < shuffled ; x++) // A big shuffle
    {
        for (i = 0; i < 52; i++)
        {
            j=rand() % 52;
            temp = wDeck[i];
            wDeck[i] = wDeck[j];
            wDeck[j] = temp;
        }
    }
}
 
void deal(card *wDeck)
{
    int i;
        for (i = 0; i <= 4; i++)
        {
            if ( wDeck[i].pix == "\x03"||wDeck[i].pix== "\x04" )
                SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), 4);
            else
                SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), 8);
                printf("%5s%s %c", wDeck[i].face, wDeck[i].pix, (i + 1) % 5 ? '\b' : '\n');
        }
}

void WaitKey()
{
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), 8);
cout << "\t\t   Press ENTER to continue...\n\t\t";
while (_kbhit()) _getch(); // Empty the input buffer
_getch(); // Wait for a key
while (_kbhit()) _getch(); // Empty the input buffer (some keys sends two messages)
}

Sponsored Links
    #2  
Old 02-04-2013
Corona688 Corona688 is offline Forum Staff  
Mead Rotor
 
Join Date: Aug 2005
Last Activity: 1 October 2014, 1:35 PM EDT
Location: Saskatchewan
Posts: 19,480
Thanks: 796
Thanked 3,288 Times in 3,083 Posts
I see no point giving a different class to each kind of card when it could just as easily be done using a class variable. Adds so much extra code and complication to a simple problem. But as a teaching example, I suppose:


Code:
enum suit { HEART, CLUB, DIAMOND, SPADE, NONE };

class card
{
public:
        card(const char *_name, int _suit):name(_name), suit(_suit) { }

        const char *Name() { return(name); }
        int Suit() { return(suit); }
        // Has to be virtual if we want it to be overloaded
        virtual bool FaceCard() { return(false); }
private:
        const char *name;
        int suit;
};

class facecard
{
public:
        facecard(const char *_name, int _suit):card(_name,_suit) { }
        // Virtual, so this overloads the one in 'card'
        virtual bool FaceCard() { return(true); }
};

class deck
{
public:
        add(card *c) { cards.push_back(c); }
        card *pick(void) { cards.pop_back(); }
        void shuffle(int shuffled=1250)
        {
          int i, j, x;
          card *temp;
          for (x = 0; x < shuffled ; x++) // A big shuffle
          {
              for (i = 0; i < deck.size(); i++)
              {
                  j=rand() % 52;
                  temp = deck[i];
                  deck[i] = deck[j];
                  deck[j] = temp;
              }
          }
        }
private:
    vector<card *> cards;
};

int main(void)
{
        deck d;
        d.add(new facecard("King", CLUB));
}

Sponsored Links
Closed Thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Want to edit a sh file using php code sanjay833i Web Programming 3 12-28-2012 05:11 PM
Are there any C code r instruction to see where is the creation or last edit for the file fwrlfo Programming 1 12-26-2012 03:28 PM
Script to Check & Edit Content of a file (Addition of comma in each lines of code) big_nutz Shell Programming and Scripting 2 06-29-2010 07:26 AM
snmp,how to edit code generated by mib2c? zainab Infrastructure Monitoring 1 04-22-2009 05:17 PM



All times are GMT -4. The time now is 04:24 AM.