Markuz Opublikowano 1 Kwietnia 2010 Udostępnij Opublikowano 1 Kwietnia 2010 Witam, ostatnio próbowałem zrobić symulator walki w JS: <html> <head> <script type="text/javascript"> var i=1; var zycie1=100; var zycie2=100; var sila1=7; var sila2=5; var ruch=2; function set(wartosc,id) { document.getElementById(id).innerHTML=wartosc; } function reset() { timer=setTimeout("starttimer()",500); } function starttimer() { if(ruch==2) { if(zycie1>=sila2) { zycie1=zycie1-sila2; set("<b>Gracz 1:</b> "+zycie1+"/100","life1"); set("Gracz 2 odjol graczowi pierwszemu "+sila2+" punktow zycia !","info"); ruch=1; reset(); } else { set("Gracz 2 wygral!","info"); } } if(ruch==1) { if(zycie2>=sila1) { zycie2-=sila1; set("<b>Gracz 2:</b> "+zycie2+"/100","life2"); set("Gracz 1 odjol graczowi drugiemu "+sila1+" punktow zycia !","info"); ruch=2; reset(); } else { set("Gracz 1 wygral!","info"); } } } function stoptimer() { clearTimeout(timer); } </script> </head> <body onload='starttimer()'> <div id='life1'><b>Gracz 1:</b> 100/100</div> <div id='life2'><b>Gracz 2:</b> 100/100</div> <div id='info'>- Raporty z walki</div> </html> Według mnie powinno to działać następująco: - Pierwszy ruch to ruch gracza 2 - Pisze że gracz 2 odejmuje życie graczowi 1 - Potem powinno być odwrotnie - Itd. do momentu "śmierci" jednego z nich A jak jest? : - Gracz 2 ma pierwszy ruch (OK) - Pisze że gracz 2 odejmuje życie graczowi 1 (Pisze że pierwszy pomija tamten ruch) - Potem powinno być odwrotnie (nie jest odwrotnie, tzn. zycie sie odejmuje ok, ale nie daje komp o tym info) - Zycie odejmuje się bardzo szybko, nie zwracając uwagi na timer .. Co jest nie tak? Prosze o pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 1 Kwietnia 2010 Udostępnij Opublikowano 1 Kwietnia 2010 Nie chciało mi się na to patrzeć, ale prawdopodobnie użyłeś setTimeout() zamiast setInterval() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markuz Opublikowano 2 Kwietnia 2010 Autor Udostępnij Opublikowano 2 Kwietnia 2010 Nic nie dało, to jest ta sama funkcja co setTimeout() chyba albo działa na podobnej zasadzie. <html> <head> <script type="text/javascript"> var i=1; var zycie1=100; var zycie2=100; var sila1=7; var sila2=5; var ruch=2; var win=0; function set(wartosc,id) { document.getElementById(id).innerHTML=wartosc; } function stoptimer() { clearTimeout(timer); } function starttimer() { if(win==0) { if(ruch==2) { if(zycie1>=sila2) { zycie1=zycie1-sila2; set("<b>Gracz 1:</b> "+zycie1+"/100","life1"); set("Gracz 2 odjol graczowi pierwszemu "+sila2+" punktow zycia !","info"); } else { set("Gracz 2 wygral!","info"); if(win==0) { win=2; } } } if(ruch==1) { if(zycie2>=sila1) { zycie2-=sila1; set("<b>Gracz 2:</b> "+zycie2+"/100","life2"); set("Gracz 1 odjol graczowi drugiemu "+sila1+" punktow zycia !","info"); } else { set("Gracz 1 wygral!","info"); if(win==0) { win=1; } } } if(ruch==1) { ruch=2; } else { ruch=1; } timer=setTimeout("starttimer()",500); } else { set("Walka zostala zakonoczona! Wygral gracz "+win,"info"); clearTimeout(timer); } } </script> </head> <body onload='starttimer()'> <div id='life1'><b>Gracz 1:</b> 100/100</div> <div id='life2'><b>Gracz 2:</b> 100/100</div> <div id='info'>- Raporty z walki</div> </html> Już wiem gdzie popełniłem błąd, teraz wszystko działa jak trzeba :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 2 Kwietnia 2010 Udostępnij Opublikowano 2 Kwietnia 2010 Nic nie dało, to jest ta sama funkcja co setTimeout() chyba albo działa na podobnej zasadzie. <html> <head> <script type="text/javascript"> var i=1; var zycie1=100; var zycie2=100; var sila1=7; var sila2=5; var ruch=2; var win=0; function set(wartosc,id) { document.getElementById(id).innerHTML=wartosc; } function stoptimer() { clearTimeout(timer); } function starttimer() { if(win==0) { if(ruch==2) { if(zycie1>=sila2) { zycie1=zycie1-sila2; set("<b>Gracz 1:</b> "+zycie1+"/100","life1"); set("Gracz 2 odjol graczowi pierwszemu "+sila2+" punktow zycia !","info"); } else { set("Gracz 2 wygral!","info"); if(win==0) { win=2; } } } if(ruch==1) { if(zycie2>=sila1) { zycie2-=sila1; set("<b>Gracz 2:</b> "+zycie2+"/100","life2"); set("Gracz 1 odjol graczowi drugiemu "+sila1+" punktow zycia !","info"); } else { set("Gracz 1 wygral!","info"); if(win==0) { win=1; } } } if(ruch==1) { ruch=2; } else { ruch=1; } timer=setTimeout("starttimer()",500); } else { set("Walka zostala zakonoczona! Wygral gracz "+win,"info"); clearTimeout(timer); } } </script> </head> <body onload='starttimer()'> <div id='life1'><b>Gracz 1:</b> 100/100</div> <div id='life2'><b>Gracz 2:</b> 100/100</div> <div id='info'>- Raporty z walki</div> </html> Już wiem gdzie popełniłem błąd, teraz wszystko działa jak trzeba :) Nie jest ta sama Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się