Hej, pisze prosta tekstowa gre "rpg". I problem mój polega na tym, że podczas walki z mobem, jego obrona moze stopniowo wzrastac. Ilosc ta jest widoczna w jego statystykach, lecz program nie zaczytuje jakby nowych danych i dmg który przyjmuje po wzroscie obrony nie zmniejsza sie tylko pozostaje taki sam jak na poczatku. Dorzucam kodzik. Czy ktos wie w czym rzecz ?
(przeskoczcie cala historie i wejdzcie na arene).```
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <time.h>
#include <dos.h>
#include <windows.h>
#include <fstream>
#include <string>
#include <ctime>
int dziennik=1;
// zmienne
bool gameend;
int input;
int atak=30;
int max_zdrowie=200;
int zdrowie=112;
int zloto=50;
int stamina=100;
int max_stamina=100;
int exp=0;
int max_exp=100;
int lvl=1;
int obrona=10;
int arena=0;
//potwory,moby
int omnik_hp=100;
int omnik_atak=10;
int omnik_obrona=10;
using namespace std;
void ladowanie_dziennika();
void dziennik_angeli1();
void dziennik_angeli2();
void dziennik_angeli3();
void genji_shimada1();
void hanamura1();
void trener();
void interfejs();
void shimadahq();
void kaplica();
void arena1();
void omnik();
void omnik_stats();
void ladowanie_dziennika()
{
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
cout<<" | Ladowanie dziennika... |"<<endl;
cout<<" ,.......... ..........,"<<endl;
cout<<" ,..,' '.' ',..,"<<endl;
cout<<" ,' ,' : ', ',"<<endl;
cout<<" ,' ,' : ', ',"<<endl;
cout<<" ,' ,' : ', ',"<<endl;
cout<<" ,' ,'............., : ,.............', ',"<<endl;
cout<<",' '............ '.' ............' ',"<<endl;
cout<<" '''''''''''''''''';''';''''''''''''''''''"<<endl;
cout<<" '''"<<endl;
cin.ignore();
cin.get();
system("cls");
if(dziennik==1)
dziennik_angeli1();
if(dziennik==2)
dziennik_angeli2();
else
dziennik_angeli3();
}
void dziennik_angeli1()
{
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED );
cout<<"Profesor Angela Ziegler"<<endl;
cout<<"19 sierpnia 2038 rok"<<endl;
cout<<endl;
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY );
cin.ignore();
cin.get();
cout<<"Dnia dzisiejszego przeprowadzony zostal eksperyment na zmarlym wczoraj pacjencie."<<endl;
cin.ignore();
cin.get();
cout<<"Obiekt nr 077 zostal pomyslnie wskrzeszony, jego funkcje zyciowe sa sztucznie podtrzymywane."<<endl;
cin.ignore();
cin.get();
cout<<"Wymagane sa dalsze obserwacje."<<endl;
cin.ignore();
cin.get();
cout<<"Koniec wpisu.";
cin.ignore();
cin.get();
system("cls");
dziennik=2;
ladowanie_dziennika();
}
void dziennik_angeli2()
{
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED );
cout<<"Profesor Angela Ziegler"<<endl;
cout<<"26 grudzien 2038 rok"<<endl;
cout<<endl;
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY );
cin.ignore();
cin.get();
cout<<"Rano funkcje zyciowe obiektu 077 ustaly. Natychmiast rozpoczeto operacje wszczepienia cybernetycznych implantow."<<endl;
cin.ignore();
cin.get();
cout<<"Maja one podtrzymywac akcje serca oraz dostarczac tlen do mozgu. Zastapione zostaly rowniez konczyny obiektu aby spowrotem przywrocic ich funcjonalnosc."<<endl;
cin.ignore();
cin.get();
cout<<"Cialo obiektu zostalo zamkniete w specjalnie zaprojektowanej zbroi aby odizolowac obiekt od wszelkich bakterii oraz drobnoustrojow."<<endl;
cin.ignore();
cin.get();
cout<<"Zycie obiektu na chwile obecna nie jest zagrozone."<<endl;
cin.ignore();
cin.get();
cout<<"Wymagane sa dalsze obserwacje."<<endl;
cin.ignore();
cin.get();
cout<<"Koniec wpisu.";
cin.ignore();
cin.get();
system("cls");
dziennik=3;
ladowanie_dziennika();
}
void dziennik_angeli3()
{
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED );
cout<<"Profesor Angela Ziegler"<<endl;
cout<<"6 styczen 2039 rok"<<endl;
cout<<endl;
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY );
cin.ignore();
cin.get();
cout<<"Obiekt 077 przebudzil sie podczas rutynowego badania i zaatakowal personel."<<endl;
cin.ignore();
cin.get();
cout<<"Nie udalo sie go ujac i wydostal sie na wolnosc."<<endl;
cin.ignore();
cin.get();
cout<<"Jego dalsze losy sa nieznane. Eksperyment zakonczony powodzeniem."<<endl;
cin.ignore();
cin.get();
cout<<"Mam jednak przeczucie ze to nie jest nasze ostatnie spotkanie, Genji Shimada."<<endl;
cin.ignore();
cin.get();
cout<<"Koniec wpisu.";
cin.ignore();
cin.get();
system("cls");
genji_shimada1();
}
void genji_shimada1()
{
interfejs();
cout<<endl;
cout<<endl;
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED );
cout<<"2 dni po ucieczce...";
cin.ignore();
cin.get();
system("cls");
interfejs();
cout<<endl;
cout<<endl;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED );
cout<<"'Jedynie zemsta potrafi utrzymac mnie przy zyciu...'"<<endl;
cout<<"'Zyje jedynie pragnieniem odzyskania tego co mi skradziono i wymierzeniu kary temu co to zrobil.'"<<endl;
cin.get();
system("cls");
hanamura1();
}
void hanamura1()
{
interfejs();
cout<<endl;
cout<<endl;
cout<<"Znajdujesz sie w Hanamurze. Gdzie chcialbys sie udac ?"<<endl;
cout<<"1. Trener."<<endl;
cout<<"2. Siedziba klanu Shimada"<<endl;
cout<<"3. Kaplica."<<endl;
cout<<"4. Arena."<<endl;
cout<<"5. Udaj sie do innej lokacji."<<endl;
cout<<"Wybierz opcje: ";
cin>>input;
switch(input)
{
case 1:
{
system("cls");
trener();
}
case 2:
{
if(lvl>=3)
{
shimadahq();
}else
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Posiadasz zbyt maly poziom! Zdobadz 3 poziom aby odblokowac ta lokacje.";
cin.ignore();
cin.get();
system("cls");
hanamura1();
}
case 3:
{
system("cls");
kaplica();
}
case 4:
{
arena1();
}
}
}
void trener()
{
interfejs();
cout<<endl;
cout<<endl;
cout<<"Znajdujesz sie w sali cwiczeniowej. Jaka statystyke chcesz ulepszyc ?"<<endl;
cout<<"1. Atak +5 - 20 szt zlota"<<endl;
cout<<"2. Obrone +1% - 10 szt zlota"<<endl;
cout<<"3. Zdrowie +15 - 10 szt zlota"<<endl;
cout<<"4. Opusc sale."<<endl;
cout<<"Wybierz opcje: ";
cin>>input;
switch(input)
{
case 1:
{
if(zloto>=20)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Ulepszyles atak."<<endl;
cout<<"Pobrano 20 szt zlota."<<endl;
atak+=5;
zloto+=-20;
cin.ignore();
cin.get();
system("cls");
trener();
}else
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Posiadasz za malo zlota!";
cin.ignore();
cin.get();
system("cls");
trener();
}
case 2:
{
if(zloto>=10)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Ulepszyles obrone."<<endl;
cout<<"Pobrano 10 szt zlota."<<endl;
obrona+=1;
zloto+=-10;
cin.ignore();
cin.get();
system("cls");
trener();
}else
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Posiadasz za malo zlota!";
cin.ignore();
cin.get();
system("cls");
trener();
}
case 3:
{
if(zloto>=10)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Ulepszyles zdrowie."<<endl;
cout<<"Pobrano 10 szt zlota."<<endl;
max_zdrowie+=15;
zloto+=-10;
cin.ignore();
cin.get();
system("cls");
trener();
}else
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Posiadasz za malo zlota!";
cin.ignore();
cin.get();
system("cls");
trener();
}
case 4:
{
system("cls");
hanamura1();
}
}
}
void shimadahq()
{
hanamura1();
}
void interfejs()
{
system("COLOR 07");
cout<<"***********************************************"<<endl;
cout<<"* *"<<endl;
cout<<" *"<<endl;
cout<<" Atak: "<<atak<<" Zloto: "<<zloto<<" "<<endl;
cout<<" "<<endl;
cout<<" Zdrowie: "<<zdrowie<<"/"<<max_zdrowie<<" Exp: "<<exp<<"/"<<max_exp<<" "<<endl;
cout<<" "<<endl;
cout<<" Obrona: "<<obrona<<" Poziom: "<<lvl<<" "<<endl;
cout<<" Stamina: "<<stamina<<"/"<<max_stamina<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"***********************************************";
}
void kaplica()
{
interfejs();
cout<<endl;
cout<<endl;
cout<<"Znajdujesz sie w kaplicy. Mozesz tutaj zregenerowac swoje sily poprzez medytacje."<<endl;
cout<<"1. Zregeneruj 20 punktow zdrowia - 10 szt zlota."<<endl;
cout<<"2. Zregeneruj 40 punktow zdrowia - 15 szt zlota."<<endl;
cout<<"3. Zregeneruj 80 punktow zdrowia - 25 szt zlota."<<endl;
cout<<"4. Wyjdz z kaplicy."<<endl;
cout<<"Wybierz opcje :";
cin>>input;
switch(input)
{
case 1:
{
if(zdrowie>=max_zdrowie-20 && zdrowie!=max_zdrowie && zloto>=10)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Czujesz jak Twoje sily witalne powracaja."<<endl;
cout<<"Przywrocono "<<max_zdrowie - zdrowie <<" punktow zdrowia."<<endl;
cout<<"Pobrano 10 szt zlota."<<endl;
zdrowie+=+(max_zdrowie - zdrowie);
zloto+=-10;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zdrowie>=1 && zdrowie>!max_zdrowie-20 && zdrowie!=max_zdrowie && zloto>=10)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Czujesz jak Twoje sily witalne powracaja."<<endl;
cout<<"Przywrocono 20 punktow zdrowia."<<endl;
cout<<"Pobrano 10 szt zlota."<<endl;
zdrowie+=+20;
zloto+=-10;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zdrowie==max_zdrowie)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Twoje zdrowie jest pelne!";
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zloto<10)
{
cout<<"Posiadasz za malo zlota!"<<endl;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
case 2:
{
if(zdrowie>=max_zdrowie-40 && zdrowie!=max_zdrowie && zloto>=15)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Czujesz jak Twoje sily witalne powracaja."<<endl;
cout<<"Przywrocono "<<max_zdrowie - zdrowie <<" punktow zdrowia."<<endl;
cout<<"Pobrano 15 szt zlota."<<endl;
zdrowie+=+(max_zdrowie - zdrowie);
zloto+=-15;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zdrowie>=1 && zdrowie>!max_zdrowie-40 && zdrowie!=max_zdrowie && zloto>=15)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Czujesz jak Twoje sily witalne powracaja."<<endl;
cout<<"Przywrocono 40 punktow zdrowia."<<endl;
cout<<"Pobrano 15 szt zlota."<<endl;
zdrowie+=+40;
zloto+=-15;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zdrowie==max_zdrowie)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Twoje zdrowie jest pelne!";
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zloto<15)
{
cout<<"Posiadasz za malo zlota!"<<endl;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
}
case 3:
{
if(zdrowie>=max_zdrowie-80 && zdrowie!=max_zdrowie && zloto>=25)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Czujesz jak Twoje sily witalne powracaja."<<endl;
cout<<"Przywrocono "<<max_zdrowie - zdrowie <<" punktow zdrowia."<<endl;
cout<<"Pobrano 25 szt zlota."<<endl;
zdrowie+=+(max_zdrowie - zdrowie);
zloto+=-25;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zdrowie>=1 && zdrowie>!max_zdrowie-80 && zdrowie!=max_zdrowie && zloto>=25)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Czujesz jak Twoje sily witalne powracaja."<<endl;
cout<<"Przywrocono 80 punktow zdrowia."<<endl;
cout<<"Pobrano 25 szt zlota."<<endl;
zdrowie+=+80;
zloto+=-25;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zdrowie==max_zdrowie)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Twoje zdrowie jest pelne!";
cin.ignore();
cin.get();
system("cls");
kaplica();
}
if(zloto<25)
{
cout<<"Posiadasz za malo zlota!"<<endl;
cin.ignore();
cin.get();
system("cls");
kaplica();
}
}
case 4:
{
system("cls");
hanamura1();
}
}
}
}
void arena1()
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Przybywasz do pobliskiej areny, w ktorej smialkowie mierza sie z poteznymi przeciwnikami za odpowiednie ilosci zlota badz innych dobr."<<endl;
cout<<"Chcesz sie wyprobowac czy rezygnujesz ?"<<endl;
cout<<"1. Tak."<<endl;
cout<<"2. Nie."<<endl;
cout<<"Wybierz opcje: ";
cin>>input;
switch(input)
{
case 1:
{
if(arena==0)
{
system("cls");
interfejs();
cout<<endl;
cout<<endl;
cout<<"Twoim pierwszym przeciwnikiem jest bojowy omnik, zaprogramowany specjalnie do walki."<<endl;
cin.ignore();
cin.get();
system("cls");
omnik();
}
}
}
}
void omnik_stats()
{
cout<<"Zdrowie: "<<omnik_hp<<endl;
cout<<"Atak: "<<omnik_atak<<endl;
cout<<"Obrona: "<<omnik_obrona<<endl;
}
void omnik()
{
int losowanie = (rand() %3)+1;
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
cout<<"1. Cios sztyletem. +5 stamina / counter,crit,defence"<<endl;
cout<<"2. Rzut shurikenem. -20 stamina / defence"<<endl;
cout<<"3. Smocze ciecie. -30 stamina / crit"<<endl;
cout<<"4. Opis umiejetnosci."<<endl;
cout<<"5. Uciekaj."<<endl;
cout<<"Wybierz akcje: ";
cin>>input;
system("cls");
switch(input)
{
case 1:
{
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
cout<<"Zadajesz "<<atak*2-(omnik_obrona*0,3)<<" obrazen!"<<endl;
omnik_hp-=(atak*2)-(omnik_obrona*0,3);
cin.ignore();
cin.get();
system("cls");
if(stamina<max_stamina && stamina>95)
{
stamina+=max_stamina;
}
if(stamina<max_stamina && stamina<95)
{
stamina+=5;
}
if(losowanie==1)
{
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
cout<<"Omnik zadaje Ci "<<omnik_atak-(obrona/3)<<" obrazen!"<<endl;
zdrowie-=(omnik_atak-(obrona/3));
cin.ignore();
cin.get();
system("cls");
omnik();
}
if(losowanie==2)
{
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
cout<<"Trafienie krytyczne!"<<endl;
cout<<"Omnik zadaje Ci "<<(omnik_atak*2)-(obrona/3)<<" obrazen!"<<endl;
zdrowie-=(omnik_atak*2)-(obrona*0,3);
cin.ignore();
cin.get();
system("cls");
omnik();
}
if(losowanie==3)
{
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
cout<<"Omnik przechodzi do obrony zwiekszajac swoja obrone o dodatkowe 10!"<<endl;
omnik_obrona+=10;
cin.ignore();
cin.get();
system("cls");
omnik();
}
}
case 2:
{
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
if(stamina>=20)
{
cout<<"Zadajesz "<<atak-(omnik_obrona*0,3)<<" obrazen!"<<endl;
omnik_hp-=atak-(omnik_obrona*0,3);
stamina-=20;
cin.ignore();
cin.get();
system("cls");
}
if(stamina<20)
{
cout<<"Posiadasz za malo staminy aby wykonac ta czynnosc!"<<endl;
cin.ignore();
cin.get();
system("cls");
omnik();
}
interfejs();
cout<<endl;
cout<<endl;
omnik_stats();
cout<<endl;
cout<<endl;
cout<<"Omnik przechodzi do obrony zwiekszajac swoja obrone o dodatkowe 10!"<<endl;
omnik_obrona+=10;
cin.ignore();
cin.get();
system("cls");
omnik();
}
}
}
int main()
{
srand( time( NULL ) );
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_RED );
cout<<" _______ __ __ _______ ___ _______ _______ _______ _______ _ _ _______ ______ ______ "<<endl;
cout<<"| || | | || | | | | || || | | || | _ | || || _ | | | "<<endl;
cout<<"|_ _|| |_| || ___| | | | _ || _____||_ _| | _____|| || || || _ || | || | _ |"<<endl;
cout<<" | | | || |___ | | | | | || |_____ | | | |_____ | || | | || |_||_ | | | |"<<endl;
cout<<" | | | || ___| | |___ | |_| ||_____ | | | |_____ || || |_| || __ || |_| | "<<endl;
cout<<" | | | _ || |___ | || | _____| | | | _____| || _ || || | | || |"<<endl;
cout<<" |___| |__| |__||_______| |_______||_______||_______| |___| |_______||__| |__||_______||___| |_||______|"<<endl;
cout<<endl;
cout<<endl;
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY );
cout<<" =="<<endl;
cout<<" ||_________________________"<<endl;
cout<<"||OOOOO||_________________________> 1. Rozpocznij nowa gre."<<endl;
cout<<" ||"<<endl;
cout<<" =="<<endl;
cout<<endl;
cout<<endl;
cout<<" =="<<endl;
cout<<" ||_________________________"<<endl;
cout<<"||OOOOO||_________________________> 2. Wyjdz z gry."<<endl;
cout<<" ||"<<endl;
cout<<" =="<<endl;
cout<<endl;
cout<<endl;
cin>>input;
system("cls");
switch(input)
{
case 1:
{
ladowanie_dziennika();
}
case 2:
{
return 0;
}
}
```