![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 32 Pomógł: 1 Dołączył: 24.07.2010 Ostrzeżenie: (30%) ![]() ![]() |
http://polandball.atspace.com/
Za pomocą tego wykrywam jaka karta znajduje się aktualnie w polu do walki:
Nie wiem jak to wszystko logicznie rozpracować żeby miało ręce i nogi. Po wykryciu i usunięciu kart powinna zachodzić zmiana w życiu po jednej i po drugiej stronie, jak na razie zrobiłem tylko tyle i wiem że jest to wadliwe myślenie.
Nie wiem jak to zrobić za pomocą switcha i return. Proszę o pomoc tudzież wskazówki. Dopiero zaczynam programowanie więc proszę o wyrozumiałość. Proszę Ten post edytował asidro 27.07.2010, 22:30:28 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
a właściwie czemu to wszystko chcesz oprzeć o javascript? ja bym raczej wszystkie te operacje przerzucił na php, tzn za pomocą biblioteki jquery i funkcji takich .load() .ajax() przesyłałbym ID karty do php i tam wykonywał wszystkie obliczenia, dodatkowo przy takim rozwiązaniu możesz wszystkie dane takie jak health itp trzymać sobie w sesji, karty mógłbyś trzymać w jakiejś wielowymiarowej tablicy zawierającej dane jak ID karty, jakie pole ona zmienia , i wartość zmiany
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Może to zrobić w oparciu o JS - nawet lepiej jak to zrobi (mniejsze obciążenie serwera). Rozdziel sobie to co widzisz na ekranie (drzewo DOM) od JS zajmującego się mechaniką gry. W mechanice stwórz sobie tablice w której zachowujesz stan graczy (karty, punkty, co tam chcesz). Dopisz funkcje które modyfikują ten stan (dodanie kart, losowanie kart, walka). W części wyglądu dopisz funkcje modyfikujące drzewo DOM (dodanie karty - dodanie elementu HTML do jakiejś części, zmiana klasy jakiegoś elementu etc). Wreszcie wydziel Kontroler w którym bindujesz eventy użytkownika (kliknięcie, ruch myszą, drag&drop) z funkcjami mechaniki i wyglądu. Voila, właśnie stworzyłeś appa opartego o pseudo MVC
![]() EDIT: @kamil4u a to przepraszam. Nie śledzę nicków ![]() Ten post edytował everth 28.07.2010, 13:46:54 -------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
@everth: Moim skromnym zdaniem, podałeś zbyt trudną do realizacji wersję gry, gdyż sam autor jeszcze nie tak dawno w innym temacie pisał, że jest początkujący,a w tym, że ma problemy ze switch-em i return - ale pomysł dobry
![]() Zacznij od funkcji, która przeanalizuje _wszystkie_ karty - jako parametr podajesz id karty: Kod //globalne funkcje var playersHp = [100,100]; //pierwszy to gracz, drugi to przeciwnik function analysis(id,isPlayer){ switch(id){ case 1: //karta dodająca 5hp graczowi playersHp[ ~~(!isPlayer) ] -= 5; //przeanalizuj ~~! (zapis ~~ w tym wypadku konwertuje !isPlayer na liczbą) break; case 1: //karta zabierająca 20hp graczowi playersHp[ ~~(isPlayer) ] -= 20; break; } refreshHp(!isPlayer); //<-- jako parametr podajesz np. id gracza } musisz zrobić jeszcze 'serce gry', czyli m.in. pobieranie odpowiednich kart do funkcji analizującej, spr. czy ktoś w między czasie nie wygrał, losowanie kart itd. Ten post edytował kamil4u 28.07.2010, 13:17:55 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 32 Pomógł: 1 Dołączył: 24.07.2010 Ostrzeżenie: (30%) ![]() ![]() |
Losowanie kart i pobieranie odpowiednich kart do funkcji analizujacej juz jest. Dzięki kamil zaraz przeanalizuje znowu bo wcześniejszego nie za bardzo zrozumiałem.
http://polandball.atspace.com/walka.js Sorry za brak wcięć. Tak by się tego nie dało zrobić, tzn. na takiej zasadzie? Bo nawet jak kamil mi dobrze wytłumaczył to ja dalej nie wiem jak miałbym to podpiąć pod mój wcześniejszy kod i zastosować. Więc chyba kamil mnie nie zrozumiał albo ja jego. Wole już użyć milion ifów bo miałbym warunki a te case return switch to mi nie pasuje jak na razie w tym przypadku coś albo moja logika zawodzi. Funkcja już "niby" uderza gracza#2 problem w tym że nie wiem jak zrobić to tak na tej samej zasadzie by wszystko działało w oparciu tylko o punkty życia i wykrywanie kart które już notabene jest. Jak to zrobić z playerem#1 by dodawało i odejmowało. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Switch to (upraszczając) po prostu if-else, ale w czytelniejszej formie(co do szybkości to nie wiem ). Ja chciałem Ci pokazać IMO trochę lepszy sposób od Twojego, ale jednocześnie nie na tyle skomplikowany, abyś jako początkujący mógł go bez problemu zrozumieć. Oczywiście możesz nie zastosować się do mojej rady uznając, że Twój kod jest lepszy. Powinieneś najpierw zastanowić się jak ta gra miałaby dokładnie działać, a dopiero potem pisać kod(nie odwrotnie, później będzie Ci dużo łatwiej wymyślać co prostsze algorytmy). Ciężko analizuje się Twój kod, ale jak chcesz już robić po swojemu to chyba(nie analizowałem całości) powinieneś pozamieniać w funkcjach:
Kod document.getElementById("zdrowie2").innerHTML = health2; w taki sposób, aby zmieniało się odpowiednie życie(1 lub 2, w zależności od atakującego), a nie tylko 'zdrowie2'. Podawaj konkretniejsze pytania, bo teraz trochę za bardzo trzeba się domyślać ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 23:36 |