source: liacs/pm/Nim_MakeFile/nim.cc@ 4

Last change on this file since 4 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

  • Property svn:executable set to *
File size: 4.6 KB
RevLine 
[2]1#include "NimSpel.h"
2#include <ctime>
3#include <iostream>
4using namespace std;
5
6//Zorgt dat de gebruiker enkel Min <= getallen <= Max in kan voeren
7int VoerInGetal(int Min, int Max){
8 int x = 0;
9 do {
10 if(!(cin >> x)) {
11 cout << "Enkel Cijfers aub" << endl;
12 cin.clear();
13 cin.ignore(10000,'\n');
14 }
15 else if (x > Max) {
16 cout << "Te groot getal" << endl;
17 }
18 else if (x < Min) {
19 cout << "Te klein getal" << endl;
20 }// end if
21 } // end do
22 while((x < Min) or (x > Max));
23 return x;
24} //end VoerInGetal
25
26
27
28//Spelers Invoer, voor stapel en aantal
29void SpelerOpConsole(const int AantalStapels, int * Stapel, int * Aantal){
30 cout << "Speler aan de beurt" << endl;
31 cout << "Welke stapel [0-" << (AantalStapels - 1) << "] : ";
32 *Stapel = VoerInGetal(0, AantalStapels - 1);
33 cout << "Hoeveel [1-2] : ";
34 *Aantal = VoerInGetal(1, 2);
35} //end SpelerOpConsole
36
37
38
39//Invoeren van variablen voor soort spelkeuze
40void InvoerVariablen(int * AantalStapels, int * AantalStokjes, bool * WinnendeZet, bool * CompWinnend) {
41 cout << "Hoeveel stapels wilt u?" << endl
42 << "Aantal: "; *AantalStapels = VoerInGetal(1,MaxStapels);
43
44 cout << "Hoeveel stokjes wilt u?" << endl
45 << "Aantal: "; *AantalStokjes = VoerInGetal(1,MaxAantal);
46
47 cout << "Geef het niveau van de computer aan" << endl
48 << "0) Random " << endl
49 << "1) Winnend Spelen " << endl
50 << "Keuze: "; *CompWinnend = VoerInGetal(0,1);
51
52 cout << endl
53 << "Wilt u de winnende zetten zien?" << endl
54 << "0) Nee " << endl
55 << "1) Ja " << endl
56 << "Keuze: "; *WinnendeZet = VoerInGetal(0,1);
57} //end InvoerVariablen
58
59
60
61
62//spel spelen op console
63void SpeelSpelOpConsole( ){
64 //init variablen (een keer kiezen, niet meer veranderen)
65 NimSpel Spelletje; //Het spelletje
66 bool Winnend = false; //Winnende zetten laten zien
67 bool CompWinnend = false; //Computer winnend spelen
68 int AantalStapels = MaxStapels; //aantal stapels die de gebruiker wil
69 int AantalStokjes = MaxAantal; //aantal stokjes dat nodig is
70
71 //spel variablen
72 bool SpelerAanBeurt = false; //True=speler is aan de beurt
73 int Stapel = 0; //tijdelijke opslag StapelNummer
74 int Aantal = 0; //tijdelijke opslag Aantal
75 char wait; //om ENTER te kunnen realiseren
76
77 //variablen invoeren
78 InvoerVariablen(&AantalStapels, &AantalStokjes, &Winnend, &CompWinnend);
79 Spelletje.BeginWaarden(AantalStapels, AantalStokjes);
80 //spel beginnen
81 while (true) { //Eeuwige Loop
82 Spelletje.DrukAfConsole( ); //Druk bord af
83
84 if (Winnend) { //winnende waarden laten zien
85 Spelletje.Winnend(&Stapel,&Aantal);
86 cout << "Winnende Zet: " << endl
87 << "Stapel: " << Stapel << endl
88 << "Aantal: " << Aantal << endl << endl;
89 } //end if
90
91 SpelerAanBeurt = not(SpelerAanBeurt); //speler wisselen
92 if (SpelerAanBeurt) { //speler aan de beurt
93 do {
94 SpelerOpConsole(AantalStapels, &Stapel, &Aantal);
95 if (Spelletje.ZetOnmogelijk(Stapel, Aantal)) {
96 cout << "Geen Geldige Combinatie, probeer opnieuw" << endl;
97 } //end if
98 } //end do
99 while(Spelletje.ZetOnmogelijk(Stapel, Aantal));
100 }
101 else { //computer aan de beurt
102 if (CompWinnend) { //winnend spelen
103 Spelletje.Winnend(&Stapel, &Aantal);
104 }
105 else { //random spelen
106 Spelletje.RandomZet(AantalStapels, &Stapel, &Aantal);
107 } //end if
108 cout << "Computer Keuze" << endl
109 << "Stapel: " << Stapel << endl
110 << "Aantal: " << Aantal << endl;
111 cout << "Druk op ENTER..."; //uitvoer computer tonen
112 cin.clear();
113 cin.ignore(10000,'\n');
114 cin.get(wait);
115 }
116 Spelletje.PakWeg(Stapel, Aantal); //zet verwerken
117 Spelletje.DrukAfConsole( ); //Score tonen
118
119 if (Spelletje.Afgelopen( )) { //spel afgelopen
120 if (SpelerAanBeurt) {
121 cout << "Voila uw heeft GEWONNEN" << endl;
122 }
123 else {
124 cout << "DE COMPUTER IS DE BESTE !!!" <<endl;
125 } //end if
126 break;
127 }
128 else if (not(SpelerAanBeurt)){ //keuze zetten terug
129 cout << endl << "De computer geeft gezet, ben u tevreden?" << endl
130 << "Maximaal terug te zetten beurten: " << (Spelletje.AantalZetten/2) << endl
131 << "'0' om gewoon door te gaan" << endl
132 << "Aantal beurten: ";
133 Spelletje.ZetTerug(VoerInGetal(0, (Spelletje.AantalZetten/2)));
134 } //end if
135 } //end while
136} //end SpeelSpelOpConsole
137
138
139int main( ){
140 srand(time(0)); //elke keer andere random begin waarde
141 SpeelSpelOpConsole( ); //begin spel
142}// end main
143
Note: See TracBrowser for help on using the repository browser.