#include <cstdlib>// Required header for srand() and rand()
#include <ctime> // Required header for time()
int main()
{
std::srand( (unsigned)std::time( 0 ) ); // Seed so every time the program runs
// it generates new random numbers.
// THIS SHOULD BE CALLED ONLY ONCE, AT THE BEGINNING OF MAIN
int randomNum = std::rand() % 3 + 1;
// rand() is the function that returns a pseudo random number.
// the % modulous operator divides a number by the second and returns remainder.
// (The value returned will be from 0 to N-1 where N is the second number.)
// Add 1 to a number 0 to N-1 and get 1 to N in this case 1 - 3.
}
You only used srand once at the very beginning of main yes?
If you call srand multiple times and then get a random number at the same time it will produce the same number.
In a loop of getting multiple rand() it should look like this:
1 2 3 4 5 6 7 8 9 10 11 12 13
int main
{
std::srand( (unsigned)std::time( 0 ) );
// Never put in a loop, call only once, beginning of main. Nowhere else.
// You can loop rand()
for (int i = 0; i != 30; )
{
i = rand() % 30 + 1;
}
return 0;
}
You're code should be fine to post here. I would help in the PM, but Dutch is not my fluent language. If its okay with you I am posting it here for others to help you. As I can tell I see no errors.
//Mathieu Amand 2A1 nimspel.CPP
//Doel:
//header-files
#include <iostream> //input- en output-stromen
#include <iomanip> //verzorgen van lay-out binnen console- of command-venster
#include <string> //werken met teksten van de klasse string
#include <cmath> //wiskundige en goniometrische library
#include <cstdlib> // is nodig als je gebruikt maak van de..
#include <ctime> // nodig voor de huidige tijd
usingnamespace std; //de standaardruimte heeft als naam std
//constanten
constint intMIN = 21, intMAX = 35;
// declaratie van functies (prototypes)
int intFRandom(int intMin, int intMax);
//hoofdprogramma (altijd als naam main)
int main()
{
int inttegenstander, intbeginnen, intbalkenstart, intbalk, intnieuwbalken;
int intkeuze;
int intspeler = 1;
srand( (unsigned)time( NULL ) );
int intcomputer = rand() % 3 + 1;
intbalkenstart = intFRandom(intMIN, intMAX);
cout << "Spelregels: (druk op enter om deze te zien)" << endl << endl;
cin.get();
cout << "Er komen een aantal balken te voorschijn:" << endl;
cout << "Elke ronde moet je 1, 2 of 3 balken verwijderen!" << endl;
cout << "Degene die de laatste balk verwijdert is verloren!" <<endl<<endl;
cin.get();
cout << "Tegen wie wil je spelen?" << endl;
cout << "Typ 1 als je tegen de computer wilt spelen." <<endl;
cout << "Typ 2 als je tegen een vriend(in) wilt spelen." <<endl;
cin >> inttegenstander;
cout << endl<<endl;
if (inttegenstander == 1)
{
cout << "Je speelt tegen de computer!" <<endl<<endl;
cout << "Wie wil je dat begint?" <<endl;
cout << "Typ 1 als je wilt dat de computer begint." <<endl;
cout << "Typ 2 als je wilt dat je zelf begint." <<endl;
cin >> intbeginnen;
while (intbeginnen != 1 && intbeginnen != 2)
{
cout << "Gelieve alleen 1 of 2 in te voeren!" << endl;
cout << "Typ 1 als je wilt dat de computer begint." <<endl;
cout << "Typ 2 als je wilt dat je zelf begint." <<endl<<endl;
cin >> intbeginnen;
}
if (intbeginnen == 2)
{
cout << "Jij mag beginnen!" << endl<<endl;
cout << "Aantal balken aanwezig: " << intbalkenstart << " --> ";
for (intbalk = 1; intbalk <= intbalkenstart; intbalk++)
{
cout << "|";
}
cout << endl;
while (intbalkenstart >= 2)
{
if (intspeler == 1)
{
cout << "Hoeveel balken wil je verwijderen? [1], [2] of [3]?" << endl;
cin >> intkeuze;
cout << endl;
while (intkeuze != 1 && intkeuze != 2 && intkeuze != 3)
{
cout << "Je kan niet " << intkeuze << " balken verwijderen!" << endl;
cout << "Gelieve [1], [2] of [3] te typen naar gelang" << endl;
cout << "het aantal balken dat je wilt verwijderen!" << endl;
cin >> intkeuze;
}
if (intkeuze == 1 || intkeuze == 2 || intkeuze == 3)
{
intbalkenstart -= intkeuze;
cout << "Je hebt " << intkeuze << " balken verwijderd!" << endl;
cout << "Er zijn nog " << intbalkenstart << " over! --> ";
for (intbalk = 1; intbalk <= intbalkenstart; intbalk++)
{
cout << "|";
}
cout << endl;
}
intspeler+=1;
}
if (intspeler == 2)
{
intbalkenstart -= intcomputer;
cout << endl << "Computers beurt!" << endl << endl;
cout << "De computer pakt " << intcomputer << " balken weg!" << endl;
cout << "Aantal balken aanwezig: " << intbalkenstart << " --> ";
for (intbalk = 1; intbalk <= intbalkenstart; intbalk++)
{
cout << "|";
}
cout << endl;
intspeler-=1;
}
}
if (intbalkenstart ==1)
{
cout << "Jij bent verloren!" << endl;
}
if (intbalkenstart <= 0)
{
cout << "Jij bent gewonnen!" << endl;
}
}
}
if (inttegenstander == 2)
{
cout << "Je speelt tegen een menselijk wezen!" <<endl<<endl;
}
while (inttegenstander != 1 && inttegenstander != 2)
{
cout << "Gelieve 1 of 2 in te typen!" <<endl;
cout << "Typ 1 als je tegen de computer wilt spelen." <<endl;
cout << "Typ 2 als je tegen een vriend(in) wilt spelen." <<endl;
cin >> inttegenstander;
}
system("PAUSE"); // dit dient om de console op C++ 2010 NIET te sluiten!
}
int intFRandom(int intMin, int intMax)
{
int intbalkenstart = rand() % (intMax - intMin + 1) + intMin;
return intbalkenstart;
}