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

Prosty system ekwipunku

Object Storage Arubacloud
0 głosów
698 wizyt
pytanie zadane 21 lutego 2016 w C i C++ przez ProtoS Nowicjusz (120 p.)
Witam. Po przemyśleniach, postanowiłem napisać temat. Piszę grę tekstową aby poćwiczyć C++. Mam problem, próbuje napisać system ekwipunku i przywdziewania tych przedmiotów. Zrobiłem klasy przedmiotów jednak jak oprogramować sam system. Czytałem na angielskich forach o wykorzystaniu enum'ów i ich jako slotów. Ktoś napisał jakiś taki system, i wytłumaczy, może jakieś pomysły? Z góry dziękuje.

1 odpowiedź

+2 głosów
odpowiedź 21 lutego 2016 przez Buby Pasjonat (19,590 p.)
edycja 21 lutego 2016 przez Buby

Ja zaproponowałbym taką konwencję:

  • stwórz klasę abstrakcyjną przedmiotu ekwipunku, która będzie zawierać bazowe metody interfejsu przedmiotu, oczywiście abstrakcyjne np. wyposaż, użyj, wypisz statystyki etc. Metody te mogą zwracać tablicę, bądź strukturę wartości.
  • wyprowadź z niej kolejne klasy np. pancerz, broń, talizman etc, które będą implementować sposoby wyposażenia oraz własne bonusy i właściwości.
  • stwórz klasę ekwipunek, która będzie zawierać tablicę np. dynamiczną listę bądź vektor wskaźników na abstrakcyjnej klasy przedmiot, do których przypiszesz konkretne elementy ekwipunku, korzystając z dziedziczenia. Klasa ekwipunek może też posiadać metody, do przeglądania kolejnych przedmiotów - np. pokaz cały ekwipunek, etc. Dzięki polimorfizmowi możesz na każdym elemencie wywołać metody "pokaż statystyki" czy "wyposaż". Stwórz metodę, która będzie modyfikować statystyki postaci, z racji przyjaźni, według otrzymanych danych z metod "wyposaż" klasy przedmiot. W ten sposób stworzysz abstrakcyjny interfejs zarządzania przedmiotami ekwipunku.
  • klasa twojej postaci może być zaprzyjaźniona z ekwipunkiem, w ten sposób będziesz mógł zmieniać dowolnie statystyki postaci, z tytułu otrzymywanych bonusów. Ekwipunek może być składową postaci.

Być może tych kilka rad pomoże Ci w projektowaniu gry.

Pozdrawiam! :)

komentarz 21 lutego 2016 przez ProtoS Nowicjusz (120 p.)
Postaram się wykorzystać, dzięki. Poczekam na kilka pomysłów i spróbuje coś wytworzyć.
komentarz 21 lutego 2016 przez Buby Pasjonat (19,590 p.)

Oczywiście można dodać enumerator typu przedmiotu. Pozwoli to, na zmianę bonusów w przypadku wcześniejszego wyposażenia.

/* typy ekwipunku */
enum WeaponType {  
      HELMET,
      WEAPON,
      NECKLACE,
      WEAPON_TYPES_AMOUNT    //tutaj dodatkowy enumerator dla wielkosci tablicy.
};

/* przykladowy element ekwipunku */
class Helmet: public EquipmentItem {
    private:
         int itemType = HELMET;
  
      // tutaj implementacja metod abstrakcyjnych etc.
};

class Equipment {
    private:       
        std::vector<Equipment*> myItems;

        // jakies metody do przegladu przedmiotow w eq
}

class Character {
    private: 
        bool isEquiped[WEAPON_TYPES_AMOUNT];   
    
   public:
       void equipItem(Equipment* item) {
          if(isEquiped[item->getType()]){
              //odejmij bonusy
          } else {
                 //tutaj tylko dodaj
          }
       }

     // jakies metody etc.
}

 

Podobne pytania

0 głosów
1 odpowiedź 346 wizyt
pytanie zadane 26 października 2015 w C i C++ przez GameProgrammer Obywatel (1,140 p.)
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 30 grudnia 2015 w C i C++ przez GameProgrammer Obywatel (1,140 p.)
0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 5 grudnia 2023 w C i C++ przez hutsalo1998 Użytkownik (520 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,963 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!

...