#include "nimSpel.h" #include // Voor het creeren van een random begingetal // die de random computer elke keer weer andere // zetten laat doen #include // Zorgen dat in- en uitvoer van de console mogelijk // is #include // Voor het netjes weergeven van de uitvoer #include "const.h" // Constanten waarden using namespace std; NimSpel spelletje; // Data module voor het spel //Zorgt dat de gebruiker enkel Min <= getallen <= Max in kan voeren int VoerInGetal( const int Min, const int Max ){ int x = 0; do { if( (cin >> x) == false ) { cout << "Enkel Cijfers aub" << endl; cin.clear(); cin.ignore(10000,'\n'); } else if( x > Max ) { cout << "Te groot getal" << endl; } else if( x < Min ) { cout << "Te klein getal" << endl; }// end if } // end do while( (x < Min) or (x > Max) ); return x; } //end VoerInGetal //Invoeren van variabelen voor soort spelkeuze void InvoerVariabelen( bool & winnendeZet, bool & compWinnend) { int aantalStapels = MAX_STAPELS; int aantalStokjes = MAX_STOKJES; cout << "Hoeveel stapels wilt u?" << endl << "Aantal: "; aantalStapels = VoerInGetal( 1, MAX_STAPELS ); cout << "Hoeveel stokjes wilt u?" << endl << "Aantal: "; aantalStokjes = VoerInGetal( 1, MAX_STOKJES ); cout << "Geef het niveau van de computer aan" << endl << "0) Random " << endl << "1) Winnend Spelen " << endl << "Keuze: "; compWinnend = VoerInGetal( 0, 1 ); cout << endl << "Wilt u de winnende zetten zien? " << endl << "N.B. Dit treedt pas in werking " << endl << "als het aantal stokjes minder " << endl << "als " << START_WINNEND << " bedraagt" << endl << "0) Nee " << endl << "1) Ja " << endl << "Keuze: "; winnendeZet = VoerInGetal( 0, 1 ); spelletje.beginWaarden( aantalStapels, aantalStokjes ); } //end InvoerVariablen //Spelers Invoer, voor stapel en aantal void spelerKeuze( int & stapel, int & stokjes ){ bool zetMogelijk = false; int maxKiesbareStapels = ( spelletje.actieveStapels() - 1 ); int tmpStapel = 0; int tmpStokjes = 0; do { cout << "Speler aan de beurt" << endl; cout << "Welke stapel [0-" << maxKiesbareStapels << "] : "; tmpStapel = VoerInGetal( 0, maxKiesbareStapels ); cout << "Hoeveel [1-2] : "; tmpStokjes = VoerInGetal( 1, 2 ); zetMogelijk = spelletje.zetMogelijk( tmpStapel, tmpStokjes ); if( zetMogelijk == false ) { cout << "Geen Geldige Combinatie, probeer opnieuw" << endl; } //end if } //end do while( zetMogelijk == false ); stapel = tmpStapel; stokjes = tmpStokjes; } //end spelerKeuze //Druk computerkeuze af void DrukComputerKeuzeAf( const int stapel, const int stokjes ) { char wait; //om 'hold' te kunnen realiseren cout << endl << "Computer Keuze" << endl << "Stapel: " << stapel << endl << "Aantal: " << stokjes << endl; cout << "Druk op ENTER..."; cin.clear( ); cin.ignore( 10000, '\n' ); cin.get( wait ); } //end DrukComputerKeuzeAf //druk winnende keuze af void DrukWinnendAf( ) { int tmpStapel = 0; int tmpStokjes = 0; if ( spelletje.winnendEnable() ) { spelletje.winnend( tmpStapel, tmpStokjes ); cout << endl << "Winnende Zet: " << endl << "Stapel: " << tmpStapel << endl << "Aantal: " << tmpStokjes << endl << endl; } else { cout << "Winnende Zet nog niet mogelijk," << endl << "aantal is nog niet beneden de " << START_WINNEND <