C++ slumpade tal fungerar inte.
Jag är väldigt ny till c++ (började för en vecka sedan) och jag försöker just nu göra en enkel "stridssimulator" dvs att man har människor och zombies med olika mycket attack och liv och i början får man skriva in hur många människor man vill ha och hur många zombies man vill ha. Sedan kommer programmet att räkna ut vilka som vinner och skriva ut hur många människor och hur många zombies som finns kvar när någon av parterna har "dött".
Men problemet är att jag försöker använda slumpade tal för att människorna eller zombierna bara ska träffa ibland men det verkar inte fungera som det ska.
Om jag till exempel skriver in 500 människor och 2500 zombies så kommer den bara att säga varje gång att zombierna vann och att det finns 2000 zombies kvar när det egentligen borde vara olika resultat varje gång. Med andra ord struntar den i attack och liknande och tar bara antalet zombies - antalet människor.
Det är möjligt att jag missar något enkelt här men jag lyckades inte hitta någon bra förklaring på internet och jag har som sagt bara hållit på i en vecka.
Här är koden. (Förlåt om den är svår att läsa men jag försökte i alla fall göra det enklare genom att lägga till kommentarer).
#include <iostream>
#include <random>
#include <ctime>
using namespace std;
int main()
{
//Anger variablerna för hur många dem är och deras attack och liv.
int Humans;
int Zombies;
int HumanAtack = 100;
int HumanHealth = 200;
int ZombieAtack = 20;
int ZombieHealth = 40;
//Anger de slumpmässiga variablerna.
mt19937 randomgenerator(time(0));
uniform_int_distribution<int> hitpercenthuman(1, 10);
uniform_int_distribution<int> hitpercentzombie(1, 10);
//Låter användaren säga hur många människor och zombier det ska vara.
cout << "How many humans do you want?" << endl << endl;
cin >> Humans;
cout << "How many zombies do you want?" << endl << endl;
cin >> Zombies;
cout << endl;
cout << "Battlenoises" << endl << endl;
//Loop som går medans människorna eller zombisarna lever.
while (Humans && Zombies > 0) {
//Väljer ett slumpmässigt tal mellan 1 och 10 och atackerar zombisarna om det blir 5 eller lägre.
hitpercenthuman(randomgenerator);
if (hitpercenthuman(randomgenerator) <= 5) {
HumanAtack - ZombieHealth;
}
//Väljer ett slumpmässigt tal mellan 1 och 10 och atackerar människorna om det blir 3 eller lägre.
hitpercentzombie(randomgenerator);
if (hitpercentzombie(randomgenerator) <= 3) {
ZombieAtack - HumanHealth;
}
//Om zombisarnas liv går ner till 0 minskas de med en.
if (ZombieHealth == 0); {
Zombies--;
}
//Om människornas liv går ner till 0 minskas de med en.
if (HumanHealth == 0); {
Humans--;
}
}
//Säger hur många människor och zombies det finns kvar när en av variablerna har dött ut.
cout << Humans << endl << endl;
cout << Zombies << endl;
system("PAUSE");
return(0);
}
Jag använder visual studio 2017 community om ni vill veta det.