Files Classes Functions Hierarchy
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
1.5.8