Thread: I need help with a Blackjack game.

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Mar 2009
    Posts
    39
    Quote Originally Posted by King Mir View Post
    The last line will never get run, because it is after the return.

    Use a do-while loop to do this instead.



    Save it to a temporary variable, clear it from the array, and return the temporary.

    srand sets a global variable. rand() will use that variable to generate a random number, and increment it itself.

    You need to call srand in main so that each time you run the game, the chain of random numbers starts at a different point.
    Thanks. I have the do... while loop and the temporary variable done. The return is at the end, and it's at least choosing cards now. I put the time stuff and srand(now) in main(), but now it's generating ridiculously high values for the cards. Here's the output:

    Code:
    A card was chosen.
    cardToDraw = 11.
    Card 1 is 4674324.
    A card was chosen.
    cardToDraw = 43.
    Card 2 is 2009310510.
    A card was chosen.
    cardToDraw = 7.
    Card 3 is 2009339772.
    A card was chosen.
    cardToDraw = 43.
    Card 4 is 2009310510.
    A card was chosen.
    cardToDraw = 45.
    Card 5 is 2358800.
    A card was chosen.
    cardToDraw = 4.
    Card 6 is 2358680.
    A card was chosen.
    cardToDraw = 19.
    Card 7 is 2009261398.
    A card was chosen.
    cardToDraw = 31.
    Card 8 is 2358840.
    A card was chosen.
    cardToDraw = 4.
    Card 9 is 2358680.
    A card was chosen.
    cardToDraw = 31.
    Card 10 is 2358840.
    A card was chosen.
    cardToDraw = 1.
    Card 11 is 2358624.
    A card was chosen.
    cardToDraw = 10.
    Card 12 is 2009261348
    A card was chosen.
    cardToDraw = 11.
    Card 13 is 5316432.
    A card was chosen.
    cardToDraw = 29.
    Card 14 is 2358708.
    A card was chosen.
    cardToDraw = 11.
    Card 15 is 5316432.
    A card was chosen.
    cardToDraw = 13.
    Card 16 is 5316432.
    A card was chosen.
    cardToDraw = 31.
    Card 17 is 2358840.
    A card was chosen.
    cardToDraw = 9.
    Card 18 is 4000.
    A card was chosen.
    cardToDraw = 30.
    Card 19 is 1.
    A card was chosen.
    cardToDraw = 50.
    Card 20 is 2009463968
    A card was chosen.
    cardToDraw = 16.
    Card 21 is 4000.
    A card was chosen.
    cardToDraw = 47.
    Card 22 is 17.
    A card was chosen.
    cardToDraw = 20.
    Card 23 is 5316432.
    A card was chosen.
    cardToDraw = 0.
    Card 24 is 2009471864
    A card was chosen.
    cardToDraw = 30.
    Card 25 is 1.
    A card was chosen.
    cardToDraw = 34.
    Card 26 is -1.
    A card was chosen.
    cardToDraw = 15.
    Card 27 is 2009269136
    A card was chosen.
    cardToDraw = 16.
    Card 28 is 4000.
    A card was chosen.
    cardToDraw = 13.
    Card 29 is 5316432.
    A card was chosen.
    cardToDraw = 47.
    Card 30 is 17.
    A card was chosen.
    cardToDraw = 19.
    Card 31 is 2009261398
    A card was chosen.
    cardToDraw = 41.
    Card 32 is 4649038.
    A card was chosen.
    cardToDraw = 0.
    Card 33 is 2009471864
    A card was chosen.
    cardToDraw = 39.
    Card 34 is 1.
    A card was chosen.
    cardToDraw = 30.
    Card 35 is 1.
    A card was chosen.
    cardToDraw = 36.
    Card 36 is 2009339602
    A card was chosen.
    cardToDraw = 40.
    Card 37 is 2.
    A card was chosen.
    cardToDraw = 39.
    Card 38 is 1.
    A card was chosen.
    cardToDraw = 13.
    Card 39 is 5316432.
    A card was chosen.
    cardToDraw = 21.
    Card 40 is 2358748.
    A card was chosen.
    cardToDraw = 23.
    Card 41 is 1.
    A card was chosen.
    cardToDraw = 34.
    Card 42 is -1.
    A card was chosen.
    cardToDraw = 1.
    Card 43 is 2358624.
    A card was chosen.
    cardToDraw = 25.
    Card 44 is 2.
    A card was chosen.
    cardToDraw = 30.
    Card 45 is 1.
    A card was chosen.
    cardToDraw = 33.
    Card 46 is 2009146752
    A card was chosen.
    cardToDraw = 4.
    Card 47 is 2358680.
    A card was chosen.
    cardToDraw = 0.
    Card 48 is 2009471864
    A card was chosen.
    cardToDraw = 4.
    Card 49 is 2358680.
    A card was chosen.
    cardToDraw = 38.
    Card 50 is 4649036.
    A card was chosen.
    cardToDraw = 38.
    Card 51 is 4649036.
    A card was chosen.
    cardToDraw = 8.
    Card 52 is 2358765.
    And here's drawCard():

    Code:
    int drawCard() {
        int deck[52];
        int cardToDraw;
        int drawnCard;
        int loop;
        while (loop != 0) {
            int deck[52] = {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13};
            loop = 0;
        }
        do {
            cardToDraw = (rand() % 52);//Generates a random number between 0 and 51. This will be the card that is drawn.
            cout<< "A card was chosen.\n";//Debugging line.
        } while (deck[cardToDraw] == 0);
        cout<< "cardToDraw = "<< cardToDraw<< ".\n";//Debugging line.
        drawnCard = deck[cardToDraw];
        deck[cardToDraw] = 0;//Removes the drawn card from the deck.
        return drawnCard;
    }
    main() is the same as before, but with time_t now;, time(&now);, and srand(now); added.

    Edit: it's also repeating cards... none of the cards are being set to 0 after they're drawn.

    Edit: Also, am I using the right modulus for rand()? I want it to generate values from 0 - 51. It seems to be doing that so far, but I figured I would ask just to be sure.
    Last edited by wipeout4wh; 06-06-2011 at 07:48 PM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. BlackJack Game
    By Squintz in forum C Programming
    Replies: 3
    Last Post: 11-12-2002, 03:31 PM
  2. blackjack game Please, please help!!
    By collegegal in forum C Programming
    Replies: 4
    Last Post: 03-11-2002, 08:02 PM
  3. blackjack game
    By collegegal in forum C Programming
    Replies: 1
    Last Post: 03-02-2002, 04:42 PM

Tags for this Thread