Ve hře se vyskytuje Hrdina, který má vlastnosti jméno, sílu, obratnost a zdraví. Dále máme Příšeru, která má sílu a zdraví. Příšera má metodu bojuj, která řeší boj s hrdinou. Boj proběhne tak, že se vyhodnotí útok obou postav. Útok hrdiny je roven síla x obratnost, u příšery je to jen síla. Když je hrdina zraněn a jeho zdraví klesne pod padesát procent, sníží se mu obratnost a síla na polovinu a teprve po uzdravení se vrátí na počáteční stav. Zranění vypočteme tak, že zjistíme rozdíl sil. Věnujte prosím pozornost zapouzdření a plné automatizaci vnitřních podmínek. Vytvořte instance diskutovaných tříd a proveďte boj.
**Jakmile bude tato část problému fungovat. Pokuste se naimplementovat elegrantní varinatu boje příšery s partou tří hrdinu reprezentovaných třídou s odkazy na jednotlivé hrdiny. Parta bude obsahovat metody na změnu hrdiny a samozřejmě konstruktor vynucující naplnění hrdiny.**
DOSAVADNI KOD:
#include <iostream>
#include <windows.h>
using namespace std;
class Hrdina{
private:
string m_jmeno;
int m_sila;
int m_obratnost;
int m_zdravi;
int m_polZdravi;
public:
Hrdina(string jmeno, int sila, int obratnost, int zdravi){
m_jmeno=jmeno;
m_sila=sila;
m_obratnost=obratnost;
m_zdravi=zdravi;
m_polZdravi=zdravi/2;
}
void vypisStav(){
cout << "Jmeno hrdiny: " << m_jmeno << endl;
cout << "Sila: " << m_sila << endl;
cout << "Obratnost: " << m_obratnost << endl;
cout << "Zdravi: " << m_zdravi << endl;
}
int getSila(){
return m_sila;
}
int getObratnost(){
return m_obratnost;
}
string getJmeno(){
return m_jmeno;
}
int getZdravi(){
return m_zdravi;
}
int getpolZdravi(){
return m_polZdravi;
}
void nastavZdravi(int zdravi){
m_zdravi=zdravi;
};
void snizAtributy(){
m_obratnost=m_obratnost/2;
m_sila=m_sila/2;
}
void obnovAtributy(){
m_obratnost;
m_sila;
}
};
class Prisera{
private:
int m_sila;
int m_zdravi;
public:
Prisera(int sila, int zdravi){
m_sila=sila;
m_zdravi=zdravi;
}
void vypisStav(){
cout << "Sila: " << m_sila << endl;
cout << "Zdravi: " << m_zdravi << endl;
}
int getSila(){
return m_sila;
}
int getZdravi(){
return m_zdravi;
}
void Bojuj(Hrdina* hero){
do{
int utokHrdiny = hero->getSila() * hero->getObratnost();
int utokPrisery = m_sila;
int zraneni = utokHrdiny - utokPrisery;
if (zraneni>=0)
{
m_zdravi=m_zdravi - utokHrdiny;
} else
{
zraneni=zraneni * -1;
hero->nastavZdravi(hero->getZdravi()- zraneni);
}
}
while (hero->getZdravi()>0 && m_zdravi>0);
if (hero->getZdravi() < hero->getpolZdravi()){
(hero->snizAtributy());
}
if (hero->getZdravi() < 0){
hero->nastavZdravi(0);
}
if (m_zdravi<0){
m_zdravi=0;
}
}
};
class Parta{
private:
Hrdina* Hero1;
Hrdina* Hero2;
Hrdina* Hero3;
?????????????????????????????????????????????????????????
public:
void Bojuj(Prisera* Nepritel){
}
??????????????????????????????????????????????????????????,
};
int main()
{
Hrdina* Gandalf = new Hrdina("Gandalf", 600, 2, 1991);
Prisera* Balrog = new Prisera(16, 1990);
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "PRED BOJEM ---------------------" <<endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
Gandalf->vypisStav();
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<<"Prisera"<<endl;
Balrog->vypisStav();
cout<< endl;
cout<< endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "VYSLEDNY BOJ -------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
Balrog->Bojuj(Gandalf);
Gandalf->vypisStav();
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "Prisera"<<endl;
Balrog->vypisStav();
delete Gandalf;
delete Balrog;
cout<< endl;
cout<< endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "BOJ PARTY S NEPRITELEM----------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
cout<< "--------------------------------"<< endl;
Parta* skupina = new Parta("f",1,1,1,"d",1,1,1,"d",1,2,2);
Prisera* Sauron = new Prisera(1000,3000);
return 0;
};
Fórum › C / C++
OOP c++ projekt
to jsou ale krávoviny ... co tak programovat něco užitečnýho?
To remmidemmi : Jako například?
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 50 hostů
Podobná vlákna
Test OOP - OpenSource projekt/... — založil Matěj Andrle
OOP projekt s mnohymi problemami — založil nord
Moderátoři diskuze