Autor Wątek: C++ Problem ze stworzeniem ekwipunku.  (Przeczytany 23204 razy)

Offline ArekBal

  • Użytkownik

  • +4
# Styczeń 16, 2014, 13:12:45
Załóżcie Repo na githubie gdzie za niego napiszecie mu grę.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Cerberus

  • Użytkownik
    • Moja strona

  • +2
# Styczeń 16, 2014, 23:27:07
Oraz jak tworzyć przedmioty np. Miecz nie będące klasami?

Proponuję Ci jednak wrócić do podstaw i się trochę poduczyć, po zadanie, które sobie postawiłeś, przerasta Twoje umiejętności ;)

No i przy programowaniu obiektowym warto wiedzieć co to są i jak się używa.. obiektów :P

Offline MoHeR

  • Użytkownik

# Styczeń 17, 2014, 22:40:14
Kod tego goscia jest o 10 leveli wyzej, niz jego pytania i umiejetnosc samodzielnego myslenia... Intersujace

Offline koirat

  • Użytkownik

# Styczeń 17, 2014, 22:53:06
Nie przyglądałem się za bardzo, ale samo nazewnictwo w rodzimym języku trochę razi i raczej kojarzy mi się z amatorszczyzną.

Offline MoHeR

  • Użytkownik

# Styczeń 18, 2014, 11:33:02
Chodziło mi raczej o to, ze jakoś nie pasuje mi dziedziczenie klas, wskaźniki i std::vector do takich pytan, jakie autor zadaje. Mam wrażenie, ze On nawet nie wie, co pisze.

Offline Acarin1995

  • Użytkownik

# Styczeń 18, 2014, 21:07:30
Poniekąd macie racje... Jestem amatorem który się uczy... I poniekąd wiem o czym mówię bo wiem jak ten kod działa... Tylko mam malutkie problemy bo grę robię samemu i czasami nie ogarnę wszystkiego od razu.

Offline Acarin1995

  • Użytkownik

# Styczeń 18, 2014, 21:44:58
Czyli zamiast tworzyć bezsensownie klas przedmiotów można to zrobić tak:
    class CBron
    {
    public:
    string nazwa;
    int atakMin;
    int atakMax;
    CBron(string nazwa, int atakMin,int atakMax);
    };
    CBron::CBron(string nazwa, int atakMin,int atakMax)
    {
   
    }
    int main()
    {
        vector<CBron*> plecak;
    CBron Miecz("Miecz",1,3);
        CBron Sztylet ("Sztylet",2,2);
    }
Jak te obiekty włożyć do plecaka poprzez plecak.push_back(Miecz); ?
« Ostatnia zmiana: Styczeń 18, 2014, 22:08:24 wysłana przez Acarin1995 »

Offline Xirdus

  • Redaktor

# Styczeń 18, 2014, 22:12:58
Czyli zamiast tworzyć bezsensownie klas przedmiotów można to zrobić tak:
Dokładnie. To właśnie chcieliśmy tobie przekazać przez te całe trzy strony.

Jak te obiekty włożyć do plecaka poprzez plecak.push_back(Miecz); ?
Masz trzy opcje: nauczyć się wskaźników, nauczyć się inteligentnych wskaźników lub nauczyć się unii. Najprościej ci chyba będzie inteligentne wskaźniki (tzn. pogooglaj o shared_ptr).

Offline Acarin1995

  • Użytkownik

# Styczeń 18, 2014, 22:23:26
Mam pytanie jak najlepiej robić ekwipunek poprzez wektory/mapy... Czy jeszcze inaczej? Chodzi mi o coś w miarę prostego....

Offline Xirdus

  • Redaktor

# Styczeń 18, 2014, 22:28:41
Wektor jest najprostszy i najlepszy.

Offline Acarin1995

  • Użytkownik

# Styczeń 18, 2014, 22:37:10
Jak wskazać wskaźnikiem na obiekt z wektora plecak..?
Czemu gdy kompiluje:
    CBron miecz("Miecz",1,7);
cout<<"atak: "<<miecz.atakMax<<endl;
wyswietla mi atak: -2?
« Ostatnia zmiana: Styczeń 18, 2014, 22:43:45 wysłana przez Acarin1995 »

Offline Xirdus

  • Redaktor

# Styczeń 18, 2014, 22:56:40
Czemu gdy kompiluje:
    CBron miecz("Miecz",1,7);
cout<<"atak: "<<miecz.atakMax<<endl;
wyswietla mi atak: -2?
Bo masz pusty konstruktor. Po co przekazujesz do niego parametry jak ich i tak nie używasz?
CBron::CBron(string nazwa_, int atakMin_,int atakMax_): nazwa(nazwa_) // można zrobić tak
{
    atakMin = atakMin_; // albo tak - wychodzi na to samo
}
Poczytaj sobie jeszcze trochę o klasach, w szczególności o konstruktorach, zanim weźmiesz się za programowanie czegoś na poważnie.

Offline Acarin1995

  • Użytkownik

# Styczeń 18, 2014, 23:06:54
ale mam konstruktor: CBron::CBron(string nazwa, int atakMin,int atakMax)
    {
    nazwa="nienazwany";
    atakMin=0;
    atakMax=0;
    }

Offline MatlertheGreat

  • Użytkownik

  • +5
# Styczeń 18, 2014, 23:21:58
Best. Constructor. Ever.
To co robisz to przypisanie wartości do parametrów konstruktora. Czyli tak naprawdę nic. Zmień nazwę parametrów, bo kompilator nie odróżnia ich od nazw pól klasy( np. tak jak zrobił Xirdus, przez "_" ).

Wracaj biegiem do nauki klas w c++( albo w ogóle c++), bo forumowicze szybko Cię znienawidzą :D

Offline Amun

  • Użytkownik

  • +1
# Styczeń 19, 2014, 00:39:14
Best. Constructor. Ever.
To co robisz to przypisanie wartości do parametrów konstruktora. Czyli tak naprawdę nic. Zmień nazwę parametrów, bo kompilator nie odróżnia ich od nazw pól klasy( np. tak jak zrobił Xirdus, przez "_" ).
Albo warto zacząć używać 'this'...