OOP c++ projekt – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

OOP c++ projekt – C / C++ – Fórum – Programujte.comOOP c++ projekt – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
mark
~ Anonymní uživatel
8 příspěvků
25. 3. 2011   #1
-
0
-

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;

};

Nahlásit jako SPAM
IP: 78.156.128.–
Reklama
Reklama
mark
~ Anonymní uživatel
8 příspěvků
25. 3. 2011   #2
-
0
-

To mark : Prosím o pomoc v implementaci PARTY děkuji :-)

Nahlásit jako SPAM
IP: 78.156.128.–
Matrix17
~ Anonymní uživatel
285 příspěvků
26. 3. 2011   #3
-
0
-

Pro uchování hrdinů bych použil nějaký kontejner. Třeba vector. No a pak ti akorát si stačí napsat pro třídu Parta metodu vloz nebo přidej je fuk jak si jí nazveš a nový hrdniny si tam postupně nasoukat.

Nahlásit jako SPAM
IP: 78.156.128.–
remmidemmi0
Super člen
26. 3. 2011   #4
-
0
-

to jsou ale krávoviny ... co tak programovat něco užitečnýho?

Nahlásit jako SPAM
IP: 78.80.23.–
sputnikone+1
Věrný člen
26. 3. 2011   #5
-
0
-

To remmidemmi : Jako například?

Nahlásit jako SPAM
IP: 94.112.92.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 79 hostů

Podobná vlákna

Test OOP - OpenSource projekt/... — založil Matěj Andrle

Oop, — založil .

Oop — založil dragon124

OOP — založil Merik

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý