![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 23.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki problem, otóż próbuje robić gre internetową, strategiczną i chce zrobić właśnie skrypt na toczenie się bitew. Np. jest taka sytuacja:
Mam 4 rodzaje jednostek, każda jednostka ma określony atak (A) i obronę (B ), np. 1 - 10A, 20B 2 - 20A, 35B 3 - 15A, 100B 4 - 75A, 30B Następuje atak: Gracz atakujący wysłał taką armie: 1 - 100 Jednostek 2 - 50 Jednostek 4 - 10 Jednostek Gracz broniący posiada taką armie: 2 - 30 Jednostek 3 - 20 Jednostek W sumie gracz Atakujący wysłał 160 Jednostek, Gracz broniący broni się 50 Jednostkami, więc w ciągu jednej tury (wymiany ciosów), gracz atakujący zadaje 160 ciosów, gracz broniący 50 ciosów. Gdybym miał tylko jeden typ armi nie byłoby problemu, ale mam kilka typów i chciałbym aby gracz atakujący w tych 160 ciosach miał 100 ciosów o sile 10A, 50 ciosów o sile 20A, 10 ciosów o sile 75A (i podobnie z graczem broniącym). Chciałbym aby jeden cios był wymierzony tylko w jedną jednostke (losowo), i jeśli jednostka ma więcej obrony niż wynosi atak, to nie ulega zniszczeniu. Oczywiście jeśli jedna strona ma więcej jednostek (czyli zadaje więcej ciosów) niż ma przeciwnik, to na jedną jednostke przeciwnika może spaść kilka ciosów w jednej rundzie. Bardzo zależy mi też na czymś takim, żeby stan zdrowia (ilość pozostałych punktów obrony) jednostek był zapisywany, niewiem czy tak sie da zrobić :/ Wyjaśnie jeśli ktos nie rozumie - jeśli spotkała sie jednostka 3 z jednostką 4, obie miały pełne zdrowie, wymieniły ciosy i po pierwszej rundzie jednostce 3 pozostało 25 obrony, a jednostce 4 15 obrony. Jeśli jest to bardzo pogmaftane to napiszcie czego nie rozumiecie, wyjaśnie. Powiedzcie czy to wogóle jest możliwe ![]() P.S. Może nie wysyłajcie odrazu gotowych skryptów, tylko poprostu powiedzcie w jaki sposób to napisać - jeśli będe wiedział z czym kombinować, to wole sam to napisać, bo nigdy mi dobrze nie szło rozszyfrowywanie obcych skryptów. Ten post edytował Ethel 14.01.2006, 11:59:13 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ja to widze jako tablice
![]() ![]() Każda jednostka to Obiekt który ma własne atrybuty (atak, obron, zycie, etc) i metody typu, GetAtakValue(), GetObronaValue() etc. Do tego dwie tablice jedna $atakujacy i druga $obronca. Na poczatku bitwy tworzymy odpowiednie obiekty w tablicach (tyle ile trzeba) a potem wybieramy dowolny element z jednej tablicy z dowolnym z drugiej. Porównywujemy wartości ataku i obrony. W razie zadańia jakichś obrażeń obnizamy ilość HP, jak spada do zera, to wyrzucamy dany obiekt z tablicy i niszczymy go. I to w petli albo... sam nie wiem jak ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) ![]() ![]() |
proponuje, kartke, olowek, siądz i przemysl algorytm. bo problem masz z nim, jak on juz bedzie zaprojektowany to z implementacją sobie poradzisz.
|
|
|
![]()
Post
#4
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(sztosz @ 2006-01-14 13:19:48) i metody typu, GetAtakValue(), GetObronaValue() etc Nie mogłem się powstrzymać. O lol, zdecyduj się na jeden język i bądź konsekwentny, bo to po prostu brzmi śmiesznie ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 866 Pomógł: 32 Dołączył: 2.06.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
@bela: Masz rację
![]() ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 03:11 |