Kezdőoldal » Számítástechnika » Programozás » Ti hogy oldanátok ezt meg...

Ti hogy oldanátok ezt meg c++-ban?

Figyelt kérdés

Röviden. Megpróbálok megcsinálni egy primitív Mortal combatot, csak konzolos verzióban. A játék úgy működik, hogy az egyik fél támad akkor kiválaszt egy támadást és kimatekozza mennyi sebzést vonjon le.


Kreáltam egy őosztályt Character néven ez tárolja a mindenki számára elérhető adatok pl HP. Természetesen minden karakterhez külön osztályt is írtam, ami a specifikus képességeket tárolja.


A gond az, hogy nemtudom, hogy oldjam meg a karakter választást. Tehát, hogy csak azt az osztályt hozza létre és rendelje a játékoshoz, amelyiket választotta.


Találtam egy ilyet:

[link]


Az a gond, hogy megcsináltam ez alapján és működik a karakter választás, de a gyerekosztályok specifikus függvényeit nem érem el, mert itt az ősosztályra mutat az egész.



2016. márc. 20. 20:50
 1/7 anonim ***** válasza:

Igen, igy mukodnek ezek a heterogen kollekciok.


Megolas lehet, ha a kepessegek nem specifikusak, hanem kepesseg1, kepesseg2, kepesseg3 van. Ezeket egyszeruen tudod hivni, mast is csinalnak.


Viszont ha az ellenfeltol is fugg, hogy mit csinal a kepesseg, akkor tovabbi modositasokra lesz szukseged.

2016. márc. 20. 20:59
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Ha minden karakternek van egy támadás metódusa, paraméterként megkapja a szükséges információkat a támadás végrehajtásához. Ellenfél védelme, billentyűkombináció vagy támadási típus amit kiválasztottál, stb. Ez után csak csinálja amit kell, meghívja a megfelelő függvényeket, beállítja az új állapotokat. Valahogy így:


class Character {

public:

virtual int attack(string type);

};


class Hulk : public Character {


public:

int attack(string type) {


swtich(type) {


case "SMASSHHH IT!!":

normal_attack();

break;


case "ROOAARRRR":

stun_and_weaken();

break;


}


void normal_attack() {

...

}


void stun_and_weaken() {

...

}


};

2016. márc. 20. 21:17
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

Tehát az ősosztályban legyenek képesség1, -2, -3 adattagok, egy-egy függvénnyel?


A primitív verzió az, hogy csak a HP-t módosítja, tehát sebzi pl, de eltudok képzelni egy olyan kcsit szfisztikáltabb verziót, hogy egyes képességek védekezésre használhatók és befolyásolják a másik fél támadását.

2016. márc. 20. 21:17
 4/7 anonim ***** válasza:

#2: Igen, ezt nevezik az oop megeroszakolasanak:)


Kerdezo: Erre a celra letrehozhatsz "absorbValue" es "absorbDuration", vagy "shield.." ertekeket.

2016. márc. 20. 21:28
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

OOP megerőszakolása? Mit értesz ez alatt? Van egy attack metódusa a Character ősosztálynak és minden leszármazott implementálja azt hogy mit ért támadás alatt, mennyit sebez, illetve milyen kombóra, billentyűkombinációkra (ez esetben szövegre) mit csináljon. Ez aligha megerőszakolás, pont ez lenne a lényege az OOP-nek.


Ellenben nem túl rugalmas az, hogy mindenkinek van egy

támadás1, támadás2, támaás3, támadás4 metódusa és mindenki implementálja ezeket. Mi van ha több vagy kevesebb támadása van? A kód-újrafelhasználás és bővíthetőség szempontjából egy igazi horror.

2016. márc. 20. 22:20
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

"Ellenben nem túl rugalmas az, hogy mindenkinek van egy

támadás1, támadás2, támaás3, támadás4 metódusa és mindenki implementálja ezeket. Mi van ha több vagy kevesebb támadása van? A kód-újrafelhasználás és bővíthetőség szempontjából egy igazi horror."


Akinek ez probléma az szerintem gondolkodás nélkül megoldja már ezt a problémát, gondolkodni azon fog épp melyik megoldás az ideális az adott helyzetben.

2016. márc. 20. 22:55
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

"Akinek ez probléma az szerintem gondolkodás nélkül megoldja már ezt a problémát, gondolkodni azon fog épp melyik megoldás az ideális az adott helyzetben."


Hát pedig azért olyan elterjedt az OOP mert előre meg lehet tervezni a kódot és később csak bővíteni, illetve implementálni kell. Fordítva ez nem igazán működik és értelmét veszti az OOP. Az úgy nem túl hatékony hogy először megírod a program vázát, majd mikor bővíteni kell, rájössz hogy újra kell strukturálni a kódot. Ha pedig nem írod újra akkor készül a spagetti.


A kérdező pedig ha jól tudom nem specifikálta hogy mindegyik karakternek ugyan annyi támadása van, és valószínűleg az majd később dől el hogy melyiknek mennyi és milyen. Gyakorlásnak viszont tökéletes megszervezni egy ilyen kódot.

2016. márc. 21. 11:52
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!