C++ Edit code


 
Thread Tools Search this Thread
Top Forums Programming C++ Edit code
# 1  
Old 02-04-2013
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 Smilie

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)
}

# 2  
Old 02-04-2013
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));
}

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Web Development

Want to edit a sh file using php code

Hi friends, I want to edit sh file using php, i have tried different method. but its shows permission issues. Folder path : xyz permission :0755 owner: 545 group: 0 filename : abc.sh permission :0644 owner:0 group: 0 how to edit these files using php/ i have use below codes, but... (3 Replies)
Discussion started by: sanjay833i
3 Replies

2. Programming

Are there any C code r instruction to see where is the creation or last edit for the file

Are there any C or termina instructin code or instruction to see where is the creation or last edit for the file (1 Reply)
Discussion started by: fwrlfo
1 Replies

3. Shell Programming and Scripting

Plus edit and edit header

Dear Masters, i have a problem with unix script, till now i just know about how to create header. i want to change file below -63395.2 72653.5 -63361.3 72696.0 ... (9 Replies)
Discussion started by: ipatah
9 Replies

4. Shell Programming and Scripting

Script to Check & Edit Content of a file (Addition of comma in each lines of code)

Hi all, I need to write an automated bash shell script which performs such operations: 1. Grep the header of everyline with the initial of "T" in "FILE_A" 2. Perform a for loop, Count the numbers of comma in the line of code, if (no. of comma < 17) ADD the comma until 17; ... (2 Replies)
Discussion started by: big_nutz
2 Replies

5. Infrastructure Monitoring

snmp,how to edit code generated by mib2c?

Hi, I'm reading net-snmp site, using C language and unix environment, I have manager ( do get/set command), agent and server ... I'm trying to monitor cpu, memory and disk usage and get Ip address of server and send the value back to agent, stored in variable which enable manager to gets the... (1 Reply)
Discussion started by: zainab
1 Replies

6. Linux

Edit Grub? help!

Please help! I have installed 5 Linux OS in the following order: 1st : OpenSUSE 11.0 2nd : Ubuntu 8.4 3rd : Ubuntu 8.10 4th : OpenSUSE 11.1 5th : Fedora 10 Here is the scenario, at the 4th installation i can still choose which OS to boot as what OpenSUSE grub displays. Now, after... (3 Replies)
Discussion started by: etcpasswd
3 Replies

7. Solaris

how to edit /etc/vfstab

I created a file system earth in /earthpool (zpool). I mounted the file system on a directory /earth. But, when I reboot my machine it doesn't load the file systems and the zpool and zfs shows no pools available and no datasets respectively. I am using Solaris 10 running on X4500. Could you... (5 Replies)
Discussion started by: bharu_sri
5 Replies

8. UNIX for Dummies Questions & Answers

Edit Crontab

Hi I am new to Unix and would like some assistance. I need to edit the crontab file so that a script is set to run at 3:00 am each day. When I telnet to the sun server and type crontab -e a black screen appears and I am unable to make any changes. Could you advice on what is needed to... (11 Replies)
Discussion started by: juliet
11 Replies

9. Shell Programming and Scripting

edit crontab without -e

hi i need to change crontab settings as minute,hour,day of month,month year,day of week certain times. for that i need to go as crontab -e. i want to avoid that as its creating many problems in mysystem. so here i m planning/trying to write a script that will update the settings in crontab... (8 Replies)
Discussion started by: d_swapneel14
8 Replies
Login or Register to Ask a Question