proj home

Files   Classes   Functions   Hierarchy  

deckpontoon.cpp

Go to the documentation of this file.
00001 
00002 #include <algorithm>
00003 #include <iostream>
00004 using namespace std;
00005 
00006 #include <clockmisc.h>
00007 
00008 #include <deckpontoon.h>
00009 
00010 uintc deckpontoon::draw()
00011 {
00012   if (current==decksize)
00013     shuffle();
00014 
00015   return v[current++];
00016 }
00017 
00018 
00019 deckpontoon::deckpontoon()
00020 {
00021   // Ace Normal Cards    Jack Queen King
00022   // 1   2 3 4 5 6 7 8 9 10   10    10
00023 
00024   numberofdecks=8;
00025   decksize = 12*4*numberofdecks;
00026   v.resize(decksize);
00027 
00028   uint i,k,w;
00029   current=0;
00030 
00031   // Iterate through each deck.
00032   for (i=0; i<8; ++i)
00033   {
00034     // Iterate through each suit.
00035     for (k=0; k<4; ++k)
00036     {
00037       for (w=1; w<=10; ++w)
00038         v[current++] = w;
00039       v[current++] = 10;
00040       v[current++] = 10;
00041     }
00042 
00043   }
00044 
00045 }
00046 
00047 
00048 void deckpontoon::shuffle()
00049 {
00050   // This call randomizes the initial shuffle.
00051 
00052   srand(generateRandomSeed(10));
00053 
00054   // Perform the shuffle a few times to get a 
00055   //   good mix.
00056   uint imax = rand() % 10;
00057   for ( uint i=0; i<imax; ++i)
00058     random_shuffle( v.begin(), v.end() );
00059 
00060   srand(generateRandomSeed(10));
00061 
00062   current=0;
00063 }
00064 
00065 bool const deckpontoon::verifyTheDeck()
00066 {
00067   uint vmax = v.size();
00068 
00069   uint w[10];
00070   for (uint k=0; k<10; ++k)
00071     w[k] = 0;
00072 
00073   for (uint i=0; i<vmax; ++i)
00074   {
00075     ++w[v[i]-1];
00076   }
00077 
00078   for (uint k=0; k<9; ++k)
00079   {
00080     if (w[k]!=numberofdecks*4)
00081       return false;
00082   }
00083 
00084   if (w[10]!=numberofdecks*4*3)
00085     return false;
00086 
00087   return true;
00088 }
00089 

Generated on Fri Mar 4 00:49:30 2011 for Chelton Evans Source by  doxygen 1.5.8