Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Jquery][Javascript] Analizowanie kart i odejmowanie lub dodawanie życia
asidro
post 28.07.2010, 10:33:31
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 24.07.2010

Ostrzeżenie: (30%)
XX---


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ę

Ten post edytował asidro 27.07.2010, 22:30:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
tehaha
post 28.07.2010, 12:13:30
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
Go to the top of the page
+Quote Post
everth
post 28.07.2010, 12:41:52
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 winksmiley.jpg

EDIT: @kamil4u a to przepraszam. Nie śledzę nicków tongue.gif

Ten post edytował everth 28.07.2010, 13:46:54


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
kamil4u
post 28.07.2010, 13:17:16
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 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.

Ten post edytował kamil4u 28.07.2010, 13:17:55


--------------------
Go to the top of the page
+Quote Post
asidro
post 28.07.2010, 14:03:14
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 24.07.2010

Ostrzeżenie: (30%)
XX---


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.
Go to the top of the page
+Quote Post
kamil4u
post 28.07.2010, 14:20:29
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ć tongue.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:36