Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2006 Ostrzeżenie: (0%)
|
Witam!
Wiem, że jest już jeden temat o tym samym zagadnieniu, lecz dyskusja tam jest według mnie bez sensu. Do rzeczy: piszę aktualnie dość zaawansowaną grę i chciałbym, żeby była jak najbardziej elastyczna. W grze jest kilka ras (każda ma inne ceny budynków, produkcję itp... ) oraz niektóre parametry są zależne od pory roku (jak na przykład produkcja). Wydaje się, że wystarczy zastosować dekorator, lecz sprawa jest trochę bardziej skomplikowana. Różne pory roku w mniejszym lub większym stopniu modyfikują parametry u różnych ras. Na chwilę obecną było mnóstwo różnych klas w stylu WinterCarthageBakery, SpringCarthageBakery... więc w finalnej wersji wyszłoby mi ponad 600 klas co jest niedopuszczalne i nieelastyczne. Kolejnym pomysłem było coś takiego: Każda klasa budynku dla danej rasy dziedziczyłaby po jakiejś klasie abstrakcyjnej w której zaimplementowany byłby mechanizm wyboru odpowiedniej zmiennej z danymi (tzn. czy zimową czy może letnią tablicę z kosztami). W ten sposób ograniczyłbym liczbę klas do ok. 150, lecz rozwiązanie znowu nie jest zbyt elastyczne. Może macie jakiś propozycje, jak zbudować elastyczniejszy system? Może trzymać ceny w bazie danych i cache'ować tylko te dla danej pory roku? Czekam na wszystkie opinie na ten temat. Ten post edytował KOMPsognat 10.02.2007, 19:34:20 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2006 Ostrzeżenie: (0%)
|
Ad.1. Czemu odpada? Mam powiedzmy porę roku pobraną z bazy danych i zapisane w jakiejś zmiennej, rasę gracza i typ budynku. Z tego wszystkiego można skonstruować odpowiedni obiekt:
Ad.2. Każdy budynek ma zapisaną w sobie cenę, produkcję na godzinę oraz kilka atrybutów specyficznych dla danego budynku. Wszystkie mechanizmy są dziedziczone po klasie abstrakcyjnej budynku. Ad.3. Budynki różnią się produkcją i ceną. Specyficzne budynki po prostu nie mają nazwy klasy z przedrostkiem innej rasy niż tej u której występuje. Ad.4. I tu jest pies pogrzebany. Modyfikacje mogą być różne. To zostanie podniesione, a to wręcz przeciwnie. W zimie u jednej rasy może być coś zwiększone a u innej zmniejszone. Ad.5. Dodanie nowej rasy to nie modyfikowanie, lecz dodanie ok. 140 klas (na chwilę obecną). Ad.6. Co do samej bazy danych. Na chwilę obecną widzę to tak: tabele w formacie "SezonRasa" i tam zapisane ceny i produkcja. Te dane byłyby cachowana przy każdej zmianie pory roku. W sumie działa to tak samo jak te setki klas w formacie SezonRasaBudynek, ale modyfikacje łatwiejsze. |
|
|
|
KOMPsognat Gra internetowa - hierarchia klas 3.02.2007, 13:20:54
NuLL Cytatwyszłoby mi ponad 600 klas co jest niedopuszc... 3.02.2007, 15:03:03
KOMPsognat Ech... złe słowo Ale nieelastyczne jak ... 3.02.2007, 15:23:48
dr_bonzo Kilka przemyslen, moze cie gdzies doprowadza.
[prz... 3.02.2007, 17:29:47
dr_bonzo 1-6.
Sorry -- myslalem za bardzo OOP i o aplikacj... 3.02.2007, 19:45:05
KOMPsognat Tak też od początku myślałem, ... 3.02.2007, 20:22:46
dr_bonzo Dekorator to nie bedzie, bo w dekoratorze wszystki... 4.02.2007, 12:47:20
KOMPsognat Ad.1. Równie dobrze można to nazwać Wint... 4.02.2007, 14:08:55
Secator Swoją drogą w nie lepiej stosować czegoś w stylu:
... 6.02.2007, 02:16:45
KOMPsognat Napisałem, że modyfikatory są zróżnicowane. Nie ma... 6.02.2007, 19:19:11
KG- No i to jest wg mnie najlepsze rozwiązanie, bawien... 8.02.2007, 21:22:31
Secator CytatNapisałem, że modyfikatory są zróżnicowane. N... 8.02.2007, 23:05:40
KOMPsognat Hehe... akurat w tym przecież nie ma nic trud... 9.02.2007, 08:17:41
bacca Miałem kiedyś taki problem. Jeśli mogę jakoś pomóc... 9.02.2007, 23:57:39
KOMPsognat Chyba zostanę przy swoim pomyśle, gdyż nie będzie ... 10.02.2007, 08:00:00
bacca Przeczytaj jeszcze raz punkt 3. i 4. Naprawde da s... 11.02.2007, 11:09:35
KOMPsognat No to muszę przyznać, że Twój sposób drastycznie r... 11.02.2007, 12:33:17
Ace heh... Nie po to sa bazy danych, zeby zapisywac po... 11.02.2007, 17:28:51
KOMPsognat I łatwo zerżnąć komputer. Jeżeli mam wykonywać ok.... 11.02.2007, 19:44:15
Ace Przeczytaj dokladnie to co napisalem.
Baza to po... 12.02.2007, 13:22:40 
KG- Cytat(Ace @ 12.02.2007, 13:22:40 ) Pr... 28.02.2007, 14:23:48
KOMPsognat Racja. Nie dopatrzyłem tego cache :]
Nie musz... 13.02.2007, 19:26:35
dr_bonzo CytatTeraz musisz połączyć się do 500 serwerów, wy... 28.02.2007, 14:57:51
Turgon Szczerze powiem jak update się robi, to tak c... 28.02.2007, 15:17:26
KOMPsognat No właśnie ten cennik będzie do... 28.02.2007, 20:39:46
Ace Hehe, a powiedz mi jaka jest roznica miedyz wykona... 1.03.2007, 13:37:40
KG- CytatTrzymanie wszystkiego w plikach textowych - u... 2.03.2007, 17:40:55
Ace Czyli robiłeś testy i mówisz, że baza nie wytrzyma... 5.03.2007, 09:46:07
KG- Wytrzyma czy nie wytrzyma to zbyt generalne poj... 7.03.2007, 14:33:19
Vogel MySQL lepiej sobie odpuścić do takich projektów. P... 7.03.2007, 15:52:21
mike_mech ~Vogel przerzuć się na wspomnianego przez siebie M... 7.03.2007, 18:00:18 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 02:44 |