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

Różne zachowanie kafli w grach

Ostatnio zmodyfikowano 2015-05-11 23:05
Autor Wiadomość
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?
P-132088
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.
P-132090
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?
P-132091
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.
P-132102
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.
P-132104
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.
P-132107
« 1 »
  Strona 1 z 1