Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Klasy abstrakcyjne, wskaźniki do obiektów

Ostatnio zmodyfikowano 2015-11-14 18:12
Autor Wiadomość
qest43
Temat założony przez niniejszego użytkownika
Klasy abstrakcyjne, wskaźniki do obiektów
» 2015-11-14 13:44:14

Jeżeli mam np. stworzoną klasę główną:

Animacja
Od niej dziedziczą: Animacja chodu, animacja umierania, animacja strzału.

Mam stworzony std::vector <std::unique_ptr <animation="&lt;Animation"> > animation;
No i teraz przykładowo chcę się ruszyć graczem i klikam A-D więc powinna uruchomić się metoda update obiektu Animacja Chodu. Gdy umiera to znowu animacja umierania. No ale jeżeli ładuje te obiekty do vectora to nie mogę się bezpośrednio do nich odwoływać, co zrobić w takiej sytuacji?

Mam taki pomysł by do każdego typu animacji dodać std::String animationType; i potem if(A is pressed) if(animation[i].getType() == "MoveAnimation")...

Albo po prostu nie tworzyć tego w vectorze tylko tworzyć osobne instancje MoveAnimation moveAnimation itd.
P-140108
j23
» 2015-11-14 14:56:20
Możesz zrobić tak jak piszesz, tylko zamiast stringów użyj wartości typu wyliczeniowego (enum).
P-140111
qest43
Temat założony przez niniejszego użytkownika
» 2015-11-14 15:08:22
Jak to umieścić z enum, bo nie za bardzo wiem. stworzyć osobny plik z tymi typami enum, czy stworzyć jeden w klasie Animation i Entity, czy jak?
P-140114
michal11
» 2015-11-14 16:00:52
Najgorsze rozwiązanie, skorzystaj ze state design pattern z gameprogrammingpatterns.com
P-140122
notabigthreat
» 2015-11-14 16:06:00
A może wsadź tą animację do vectora dopiero, gdy gracz naciska odpowiedni klawisz?
Przecież nie ma animacji chodzenia, jeśli postać nie chodzi.
P-140124
j23
» 2015-11-14 18:12:03
Jak to umieścić z enum,
Nie umieścić z enum, tylko użyć typu wyliczeniowego zamiast porównywać stringi, co w tym przypadku jest kompletnie bez sensu.

C/C++
enum ANI_TYPE
{
    moveAnimation = 1,
    /* tu inne typy animacji */
};

class MoveAnimation
{
    ...
   
    ANI_TYPE getType() const { return moveAnimation; }
};

...

if( animation[ i ].getType() == moveAnimation ) {...}


P-140129
« 1 »
  Strona 1 z 1