#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 << "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; spelletje.winnend( tmpStapel, tmpStokjes ); cout << endl << "Winnende Zet: " << endl << "Stapel: " << tmpStapel << endl << "Aantal: " << tmpStokjes << endl << endl; } //end DrukWinnendAf //Druk netjes het bord af void DrukBordAf( ) { cout << endl << "==== Beurt " << spelletje.aantalBeurten() << " ====" << endl; for( int i = 0; i < spelletje.actieveStapels(); i++ ) { cout << "Spel " << setw(2) << i << " = " << setw(2) << spelletje.aantalOpStapel( i ) << endl; } //end for } //end DrukBordAf //spel spelen op console int main( ) { srand( time(0) ); //elke keer andere random begin waarde //init variabelen (een keer instellen, niet meer aankomen) bool winnend = false; //Winnende zet laten zien bool compWinnend = false; //Computer winnend laten spelen //spel variabelen bool spelerAanBeurt = false; //True=speler is aan de beurt int stapel = 0; //tijdelijke opslag StapelNummer int stokjes = 0; //tijdelijke opslag stokjesAantal //variabelen invoeren InvoerVariabelen( winnend, compWinnend ); //spel beginnen while( true ) { //Eeuwige Loop spelerAanBeurt = not( spelerAanBeurt ); //speler wisselen DrukBordAf( ); //Druk bord af if( spelerAanBeurt == true ) { //speler aan de beurt if( winnend == true ){ // druk winnend af indien DrukWinnendAf(); // gewenst } spelerKeuze( stapel, stokjes); } else { //computer aan de beurt spelletje.computerZet( compWinnend, stapel, stokjes ); DrukComputerKeuzeAf( stapel, stokjes ); } spelletje.pakWeg( stapel, stokjes ); //zet verwerken if( spelletje.afgelopen( ) ) { //als spel afgelopen if( spelerAanBeurt ) { cout << "Voila uw heeft GEWONNEN" << endl; } else { cout << "DE COMPUTER IS DE BESTE !!!" <