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

Last change on this file since 400 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.