// Marble Jar class implementation // // Dave Reed davereed@creighton.edu ////////////////////////////////////////////////////////////////// #include "Die.h" #include "MarbleJar.h" MarbleJar::MarbleJar(int black, int white) // precondition : black >= 0, white >= 0 // postcondition: numBlack = black, numWhite = white { numBlack = black; numWhite = white; } Color MarbleJar::DrawMarble() // precondition : jar is not empty (numBlack+numWhite > 0) // postcondition: draws a random marble and returns its color // (either BLACK OR WHITE). As a side effect, // the corresponding color count is decremented. { Die myDie(numBlack+numWhite); if (myDie.Roll() <= numBlack) { numBlack--; return BLACK; } else { numWhite--; return WHITE; } } void MarbleJar::AddMarble(Color marble) // precondition : marble == BLACK or WHITE // postcondition: adds a marble of the specified color to the jar, // incrementing the color count. { if (marble == BLACK) { numBlack++; } else { numWhite++; } } bool MarbleJar::IsEmpty() // precondition : jar contains numBlack and numWhite marbles // postcondition: returns true if jar is empty (no marbles) { return (numBlack + numWhite == 0); }