• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekazywanie 2 obiektow klasy do funkcji [c++]

Object Storage Arubacloud
0 głosów
311 wizyt
pytanie zadane 19 stycznia 2019 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
edycja 19 stycznia 2019 przez DragonCoder

Witam,

mam problem, moze nie tyle problem, co szukam alternatywy dla funkcji, ktora bedzie odpowiedzialna za walke miedzy bohaterem i potworem.:

class Monster {
protected:
	std::string nameMonster_;
	unsigned short levelMonster_;
	int widthMonster_;
	int lengthMonster_;
    int damageMonster_;
	unsigned int lifeMonster_;
	unsigned short  defenceMonster_;
    int dropMoneyMonster_;

    unsigned short indexMonster_;

    bool getDamageOnlyBy_Skill_;

};
class Hero {
protected:
	std::string nameHero_;
	int widthHero_;
	int lengthHero_;
	unsigned long long targetMoneyHero_;
	unsigned short minimalDamageHero_;
	unsigned short maximalDamageHero_;
	unsigned short damageHero_;
};

I teraz chcialem stworzyc funckje, ktora jest odpowiedzialna za walke, tylko zastanawiam sie czy da sie to zrobic bez zaprzyjazniania ze soba obu klas? Pewnie najlepiej wszystko byloby wsadzic do kolejnej klasy, ktora bylaby odpowiedzialna za cala gre. A z funkcja myslalem cos takiego

void fight (Hero & hero, Monster & monster)

{

}

 

komentarz 19 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Tylko ze damage klasy Hero, bierze sie z statystyk oraz itemow jakie nosi, ale nawet wykluczajac dameg, to zostaja 3 atrybuty. Tylko ze klasa hero, jest dalej dziedziczona przez kolejne 5 klas, ktore dostaja wlasne umiejetnosci. Ale teoretycznie mozna by tak zrobic, ale wtedy musialby to byc klasa abstrakcyjna, prawda?
komentarz 19 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)

@Hiskiel,

czy oplaca sie robic 3 klase dla tych 3  zmiennych? Bo w przypadku Bohatera wygladaloby to tak:

class Entity {

};

class Hero :
        public Entity
{

};

class myHero:
    public Hero
 {

};

 

1 odpowiedź

+1 głos
odpowiedź 19 stycznia 2019 przez mokrowski Mędrzec (155,460 p.)
Jest na to wiele sposobów. Zaprzyjaźnienie wydaje się najgorszym wyborem.

Tak Hero jak i Monster, posiadają zdolność do walki, czyli potrafią walczyć czyli powinny implementować interfejs walki. To jedno z rozwiązań.

Hero i Monster mogą wpuszczać i emitować obiekt typu Attack który przeciwnik będzie akceptował.

Oba walczące obiekty, zgłaszają się do Arbiter i on animuje walką...

.. wiele innych pomysłów zależnych od wielu czynników w grze.

Pozostaje tylko pytanie czy i jak to zaimplementować oraz co w przyszłości będzie w grze występowało.
komentarz 19 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)

Na poczatku bedzie sie odbywalo to poprzez wybor w menu, ale pozniej chce dodawac grafik i umozliwic walke, dopiero gdy pozycja graza bedzie rowna pozycji potwora i gracz w tym momencie go uderzy. Ale to juz pozniej i mysle, ze wtedy nie bedzie az tak wielkiego problemu.

Chodzi mi najpierw o stworzenie wlasnie ogolnego zarysu funkcji, a pozniej w grze przekazywaniu odpowiedniego obiektu klasy. Dlatego przyszedl mi pomysl z funkcja:

void fight (Hero & hero, Monster & monster)
 
{
 
}

Tylko nie wiem, czy jej inicjalizacja powinna odbyc sie np w klasie Game, czy moze stworzyc klase dodatkowa i wszystkie funkcje jakie beda dzielic klasy wsadzac tam i inicjlizowac jako wirtualne?

1
komentarz 19 stycznia 2019 przez mokrowski Mędrzec (155,460 p.)
Jakkolwiek by to nie zabrzmiało, myślę że lepiej jak sprawdzisz to "w boju". Będziesz miał już fragment kodu i zapewne popełnisz błąd który Cię czegoś nauczy. Jeśli bez kodu i zupełnie teoretycznie będziesz pytał, to ilość rozwiązań jest przeogromna. Drastycznie zawęża się jak już masz koncepcję (nawet fragmentaryczną) całości. Jeszcze bardziej się zawęża jeśli masz już jakiś (nawet boleśnie-naiwny) kod. Dzięki temu podejściu będziesz "wyczuwał rozwiązania" w przyszłości. To także jest dobra droga nauki. Odnoszę wrażenie że na tym etapie na jakim jesteś, będzie to dla Ciebie najbardziej rozwijające. Oczywiście z wzorcami projektowymi GoF oraz dla branży gier, sugeruję się zapoznać. Później wybierz najlepszy wg. Ciebie i ... jedziesz .... do najbliższego bęc. Jak się podniesiesz to zastanawiasz się dlaczego to było kiepskie, zmieniasz koncepcję i jedziesz dalej :)
komentarz 19 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
A jakies ksiazki warte polecenia odnosnie programowania gier?
komentarz 19 stycznia 2019 przez mokrowski Mędrzec (155,460 p.)
W powiązaniu z pytaniem, zacznij od tego: http://gameprogrammingpatterns.com/contents.html

Podobne pytania

0 głosów
2 odpowiedzi 302 wizyt
0 głosów
4 odpowiedzi 260 wizyt
pytanie zadane 10 stycznia 2017 w C i C++ przez devi Początkujący (320 p.)
0 głosów
2 odpowiedzi 220 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...