Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Jquery][Javascript] Analizowanie kart i odejmowanie lub dodawanie życia
Forum PHP.pl > Forum > Przedszkole
asidro
http://polandball.atspace.com/


Za pomocą tego wykrywam jaka karta znajduje się aktualnie w polu do walki:
[JAVASCRIPT] pobierz, plaintext
  1. $('div#kartawalka1 img.infa1)
[JAVASCRIPT] pobierz, plaintext


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.

  1. <td><img src="health.gif" /><span id="zdrowie1">100</span>/100</td>
  2. <td><img src="health.gif" /><span id="zdrowie2">100</span>/100</td>


[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var health2 = 100;
  3.  
  4.  
  5. function infap()
  6. {
  7. if(health2 <= 100 && health2 >=5)
  8. {
  9. health2 -= 5;
  10. document.getElementById("zdrowie2").innerHTML = health2;
  11. }
  12. else if(health2 <= 5)
  13. {
  14. health2 = 0;
  15. document.getElementById("zdrowie2").innerHTML = health2;
  16. }
  17. }
[JAVASCRIPT] pobierz, plaintext


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ę
tehaha
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
everth
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 winksmiley.jpg

EDIT: @kamil4u a to przepraszam. Nie śledzę nicków tongue.gif
kamil4u
@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 winksmiley.jpg

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.
asidro
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.
kamil4u
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ć tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.