#include "NimSpel.h" #include #include using namespace std; //Zorgt dat de gebruiker enkel Min <= getallen <= Max in kan voeren int VoerInGetal(int Min, int Max){ int x = 0; do { if(!(cin >> x)) { 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 //Spelers Invoer, voor stapel en aantal void SpelerOpConsole(const int AantalStapels, int * Stapel, int * Aantal){ cout << "Speler aan de beurt" << endl; cout << "Welke stapel [0-" << (AantalStapels - 1) << "] : "; *Stapel = VoerInGetal(0, AantalStapels - 1); cout << "Hoeveel [1-2] : "; *Aantal = VoerInGetal(1, 2); } //end SpelerOpConsole //Invoeren van variablen voor soort spelkeuze void InvoerVariablen(int * AantalStapels, int * AantalStokjes, bool * WinnendeZet, bool * CompWinnend) { cout << "Hoeveel stapels wilt u?" << endl << "Aantal: "; *AantalStapels = VoerInGetal(1,MaxStapels); cout << "Hoeveel stokjes wilt u?" << endl << "Aantal: "; *AantalStokjes = VoerInGetal(1,MaxAantal); 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); } //end InvoerVariablen //spel spelen op console void SpeelSpelOpConsole( ){ //init variablen (een keer kiezen, niet meer veranderen) NimSpel Spelletje; //Het spelletje bool Winnend = false; //Winnende zetten laten zien bool CompWinnend = false; //Computer winnend spelen int AantalStapels = MaxStapels; //aantal stapels die de gebruiker wil int AantalStokjes = MaxAantal; //aantal stokjes dat nodig is //spel variablen bool SpelerAanBeurt = false; //True=speler is aan de beurt int Stapel = 0; //tijdelijke opslag StapelNummer int Aantal = 0; //tijdelijke opslag Aantal char wait; //om ENTER te kunnen realiseren //variablen invoeren InvoerVariablen(&AantalStapels, &AantalStokjes, &Winnend, &CompWinnend); Spelletje.BeginWaarden(AantalStapels, AantalStokjes); //spel beginnen while (true) { //Eeuwige Loop Spelletje.DrukAfConsole( ); //Druk bord af if (Winnend) { //winnende waarden laten zien Spelletje.Winnend(&Stapel,&Aantal); cout << "Winnende Zet: " << endl << "Stapel: " << Stapel << endl << "Aantal: " << Aantal << endl << endl; } //end if SpelerAanBeurt = not(SpelerAanBeurt); //speler wisselen if (SpelerAanBeurt) { //speler aan de beurt do { SpelerOpConsole(AantalStapels, &Stapel, &Aantal); if (Spelletje.ZetOnmogelijk(Stapel, Aantal)) { cout << "Geen Geldige Combinatie, probeer opnieuw" << endl; } //end if } //end do while(Spelletje.ZetOnmogelijk(Stapel, Aantal)); } else { //computer aan de beurt if (CompWinnend) { //winnend spelen Spelletje.Winnend(&Stapel, &Aantal); } else { //random spelen Spelletje.RandomZet(AantalStapels, &Stapel, &Aantal); } //end if cout << "Computer Keuze" << endl << "Stapel: " << Stapel << endl << "Aantal: " << Aantal << endl; cout << "Druk op ENTER..."; //uitvoer computer tonen cin.clear(); cin.ignore(10000,'\n'); cin.get(wait); } Spelletje.PakWeg(Stapel, Aantal); //zet verwerken Spelletje.DrukAfConsole( ); //Score tonen if (Spelletje.Afgelopen( )) { //spel afgelopen if (SpelerAanBeurt) { cout << "Voila uw heeft GEWONNEN" << endl; } else { cout << "DE COMPUTER IS DE BESTE !!!" <