qest43 Temat założony przez niniejszego użytkownika |
Różne zachowanie kafli w grach » 2015-05-11 20:08:27 Biorąc przykładowo grę, np. platformową lub jakąkolwiek 2D, mamy tam wiele kafli. Załóżmy że mamy klasę Tile i zawiera ona metody update i draw. Zwykłe kafle będą miały tylko kolizję na 1, i update będzie puste, ale są takie klocki które będą się przesuwały x pól w jedną stronę i y w drugą. Czy lepiej zrobić enum w klasie Tile i potem w klasie update za pomocą case aktualizować właściwości kafla, czy stworzyć dla innych typów kafli nową klasę dziedziczoną od Tile, i potem stworzyć tablicę wskaźników które będą pokazywały odpowiednio na kafle różnych typów? |
|
1aam2am1 |
» 2015-05-11 20:52:03 Najlepszą możliwością by było stworzenie dwóch zmiennych definiujących wielkość i kształt kafli. |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2015-05-11 20:57:39 Ale po co, kafel jest zawsze tej samej wielkości i tego samego kształtu, tutaj się rozchodzi o typy tych kafli. Np. typ ściana czyli kolizja na 1, w update nic bo tylko stoi i to wszystko, oraz drugi typ np. platforma - kolizja na 1, w update poruszanie platformą x w prawo i w lewo. Czyli mając tutaj dwa typy kafli powinno się zrobić dwie osobne klasy dziedziczące od Tile gdzie update jest wirtualne, czy na zasadzie enum{wall, platform}, gdzie potem jest SWITCH w update dla danego kafla inne czynności w jednej klasie? |
|
pekfos |
» 2015-05-11 22:18:25 Czyli mając tutaj dwa typy kafli powinno się zrobić dwie osobne klasy dziedziczące od Tile gdzie update jest wirtualne, czy na zasadzie enum{wall, platform}, gdzie potem jest SWITCH w update dla danego kafla inne czynności w jednej klasie? |
Dodasz więcej typów i ten switch będzie niemiłosiernie puchnąć. Będziesz zmuszony podzielić go na metody, a wtedy, czy sterowanie będzie rozdzielać switch, czy polimorfizm, to tylko kwestia, czy chcesz we własnym zakresie implementować i utrzymywać mechanizm, który zapewnia ci język. |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2015-05-11 22:23:38 No faktycznie ten SWITCH będzie spory, no a jeśli to podzielić na metody to i tak sporo zamieszania to wprowadzi jeżeli będzie wiele mechanizmów kafli. Widziałem jednak że na wszystkich stronach programiści tworzą tylko jedną klase kafla i tam w środku to potem dzielą switchami itp. Ja osobiście bym właśnie zrobił Tile jako klasę główną wirtualną, a potem różne kafle to inna klasa, i do tablicy wskaźników przypisywać odpowiednie typy kafli. No a C++ oferuje odpowiednie do tego warunki. |
|
pekfos |
» 2015-05-11 23:05:30 Widziałem jednak że na wszystkich stronach programiści tworzą tylko jedną klase kafla i tam w środku to potem dzielą switchami itp. |
Jakich znowu 'wszystkich stronach'? Nawet jeśli tak robią, to mogą mieć ku temu powody. To też jest rozwiązanie i ma swoje zalety, co bynajmniej nie znaczy, że to zawsze jest najlepsza metoda. Nie jest też zbyt prawdopodobne, że rozwiązania z przykładów w internecie będą pasować do projektu o konkretnych założeniach. |
|
« 1 » |