virtual void turnCrank() { std::cout << "You turned..." << std::endl; int winner = rand() % 5; // randomWinner->nextInt(10); if ((winner == 0) && (gumballMachine->getCount() > 1)) { gumballMachine->setState(gumballMachine->getWinnerState()); } else { gumballMachine->setState(gumballMachine->getSoldState()); } }
void dispense() { std::cout << "YOU'RE A WINNER! You get two gumballs for your quarter" << std::endl; _gumballMachine->releaseBall(); if (_gumballMachine->getCount() == 0) { _gumballMachine->setState(_gumballMachine->getSoldOutState()); } else { _gumballMachine->releaseBall(); if (_gumballMachine->getCount() > 0) { _gumballMachine->setState(_gumballMachine->getNoQuarterState()); } else { std::cout << "Oops, out of gumballs!" << std::endl; _gumballMachine->setState(_gumballMachine->getSoldOutState()); } } }
int main() { cout << "+++ WELCOME TO THE CIMS GUMBALL MACHINE SIMULATOR!! +++" << endl; cout << "------------------------------------------" << endl; string gb_names[NUM_GB_COLORS] = { "Red", "Blue", "White", "Green", "Black", "Purple", "Cyan", "Magenta", "Yellow" }; GumballMachine *machine = GumballMachine::getInstance(); cout << "You are starting with the following Gumballs:" << endl; for (int i = 0; i < NUM_GB_COLORS-1; i++) { GUMBALL gb_cast = (GUMBALL)i; int gb_count = machine->fill(gb_cast); cout << gb_count << " " << gb_names[gb_cast] << endl; } // end for loop machine->getGumballs()->push_back(YELLOW); cout << "...and 1 yellow" << endl; cout << "------------------------------------------" << endl; cout << "Here are your random purchases:" << endl; int index = (int)machine->getGumballs()->size() - 1; random_shuffle(machine->getGumballs()->begin(), machine->getGumballs()->end()); GUMBALL chosen = RED; // pick an arbitrary color short unsigned int gb_dispensed = 0; vector<GUMBALL> dispensed_gumballs; do { chosen = machine->dispense(index--); // index-- since we pop one off the gumball vector each time dispensed_gumballs.push_back(chosen); cout << gb_names[chosen] << endl; machine->getGumballs()->pop_back(); gb_dispensed++; } while (chosen != YELLOW); // end do/while cout << "------------------------------------------" << endl; cout << "You purchased " << gb_dispensed << " gumballs for a total of $"; printf("%.2f\n", (float)gb_dispensed * 0.25); // printf() still gives better formatting options vector<GUMBALL> most_purchased = findMaxColors(dispensed_gumballs); cout << "Most purchased: "; for (int i = 0; i < (int)most_purchased.size(); i++) cout << gb_names[most_purchased[i]] << " "; cout << endl; delete machine; return 0; } // end main()
void main() { GumballMachine *gumballMachine = new GumballMachine(5); cout << gumballMachine->toString() << endl; gumballMachine->insertQuarter(); gumballMachine->turnCrank(); cout << gumballMachine << endl; gumballMachine->insertQuarter(); gumballMachine->turnCrank(); gumballMachine->insertQuarter(); gumballMachine->turnCrank(); cout << gumballMachine->toString() << endl; delete gumballMachine; }
public: virtual void insertQuarter() { std::cout << "You inserted a quarter" << std::endl; gumballMachine->setState(gumballMachine->getHasQuarterState()); }
virtual void ejectQuarter() { std::cout << "Quarter returned" << std::endl; gumballMachine->setState(gumballMachine->getNoQuarterState()); }
void insertQuarter() const { std::cout << "You inserted a quarter" << std::endl; _gumballMachine->setState(_gumballMachine->getHasQuarterState()); }