Witam,
Napisałem program który ma działać na zasadzie, że są dwie postacie, które walczą ze sobą, z góry określone są ich statystyki (zdrowie,obrażenia,szansa na cios krytyczny).
Obie postacie walczą do momentu która jedna nie zabierze wszystkich punktów zdrowia drugiej, atakując turowo. Z początkiem każdej nowej tury ich obrażenia minimalne i maksymalne, z których losowana jest liczba obrażeń na daną turę zwiększa się o 1.5. Cios krytyczny zwiększa obrażenia dwukrotnie.
Na początku wprowadzamy ile razy mają walczyć( w sensie, że któraś postać ma zabić którąś x razy). Każdą nową walkę zaczyna losowy gracz.
Pierwszy problem mam taki aby te obrażenia zwiększyć o 1.5 z początkiem nowej tury. Używam inta do zmiennych a najpewniej trzeba by było użyć double, który jakoś nie działa.
Pomijając zwiększanie tych obrażeń z każdą turną to drugi problem to taki, że chciałbym aby te postacie zawalczyły ze sobą powiedzmy, że 100 razy. Ale program nie zwraca wyników tylko cały czas muli.
Ktoś pomoże? Jest to program stworzony czysto 4fun.
using namespace std;
int main()
{
srand(time(NULL));
long int obrazenie1;
long int obrazenie2;
int o = 0;
int krytyk1;
int krytyk2;
int ktozaczyna; //1 ja //2 ty
int runda = 1; // ilosc rudn
double zwiekszaniedmg = 1.5;
long int dmgmin1 = 116490, dmgmax1 = 293370, kryt1 = 49, hp1 = 905734; // moja postac
long int dmgmin2 = 82297, dmgmax2 = 163660, kryt2 = 41, hp2 = 663536; // twoja postac
int jedynka = 0, dwojka = 0;
int k;
cout << "Ile symulacji przeprowadzic?" << endl;
cin >> k;
for (int i = 0; i < k; i++) {
if (runda = 1) {
dmgmin1 = 116490;
dmgmax1 = 293370;
hp1 = 905734;
dmgmin2 = 82297;
dmgmax2 = 163660;
hp2 = 663536;
}
ktozaczyna = 1 + rand() % (2 - 1 + 1);
if (ktozaczyna == 1) /*PIERWSZY GRACZ ZACZYNA */
while (o != 1) {
obrazenie1 = dmgmin1 + rand() % (dmgmax1 - dmgmin1 + 1);
krytyk1 = 1 + rand() % (100 - 1 + 1);
if (krytyk1 >= 1 && krytyk1 <= 49)
hp2 = hp2 - (obrazenie1 * 2);
hp2 = hp2 - obrazenie1;
if (hp2 <= 0) {
runda = 1;
jedynka++;
o++;
}
obrazenie2 = dmgmin2 + rand() % (dmgmax2 - dmgmin2 + 1);
krytyk2 = 1 + rand() % (100 - 1 + 1);
if (krytyk2 >= 1 && krytyk2 <= 41)
hp1 = hp1 - obrazenie2 * 2;
hp1 = hp1 - obrazenie2;
if (hp1 < 0) {
runda = 1;
dwojka++;
o++;
}
runda++;
if (runda >= 2) {
dmgmin1 = dmgmin1 * zwiekszaniedmg;
dmgmax1 = dmgmax1 * zwiekszaniedmg;
dmgmin2 = dmgmin2 * zwiekszaniedmg;
dmgmax2 = dmgmax2 * zwiekszaniedmg;
}
}
o = 0;
if (ktozaczyna == 2) /*DRUGI GRACZ ZACZYNA*/
while (o != 1) {
obrazenie2 = dmgmin2 + rand() % (dmgmax2 - dmgmin2 + 1);
krytyk2 = 1 + rand() % (100 - 1 + 1);
if (krytyk2 >= 1 && krytyk2 <= 49)
hp1 = hp1 - obrazenie2 * 2;
hp1 = hp1 - obrazenie2;
if (hp1 <= 0) {
runda = 0;
dwojka++;
o++;
}
obrazenie1 = dmgmin1 + rand() % (dmgmax1 - dmgmin1 + 1);
krytyk1 = 1 + rand() % (100 - 1 + 1);
if (krytyk1 >= 1 && krytyk1 <= 41)
hp2 = hp2 - obrazenie1 * 2;
hp2 = hp2 - obrazenie1;
if (hp2 < 0) {
runda = 0;
jedynka++;
o++;
}
runda++;
if (runda >= 2) {
dmgmin1 = dmgmin1 * zwiekszaniedmg;
dmgmax1 = dmgmax1 * zwiekszaniedmg;
dmgmin2 = dmgmin2 * zwiekszaniedmg;
dmgmax2 = dmgmax2 * zwiekszaniedmg;
}
}
o = 0;
cout << i;
}
cout << "jedynka wygral " << jedynka << "razy "
<< "dwojka wygral " << dwojka << "razy" << endl;
}