Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem zapętleniem
Forum PHP.pl > Forum > Przedszkole
Chemiq
około 2 miesiące temu zaczołem zabawę z php i mysql. najpierw czytałem różne kursy itd. a niedawno zacząłem pisać skrypty. tak sobie pomyslałem że zacznę od czegoś większego żeby nie tracić czasu na drobne bzdury. wymyśliłem że zrobię sobie grę online. jak narazie dobrze mi idzie i dużo już zrobiłem ale nie mogę uporać się z jedną rzeczą:
mam system walki. nie wiem jak go zapętlić żeby wykonywał się do momentu aż zmienna $zycie_p lub $zycie_p1 osiągnie 0. gdy wstawiałem pętlę while to ta część skryptu wogóle się nie pojawiała. może coś źle zrobiłem albo podałem złe warunki. co mam zrobić?

treść skryptu walcz.php:
  1. <? //walcz.php
  2. $rand1 = 1;
  3. $rand2 = 2;
  4.  
  5. include 'odczytaj_atak.php';
  6.  
  7. $mnoznik = rand($rand1,$rand2);
  8. $obrazenia = $sila_p * $mnoznik;
  9.  
  10. include 'odczytaj_obrona.php';
  11.  
  12. $mnoznik1 = rand($rand1,$rand2);
  13. $obrazenia1 = $sila_p1 * $mnoznik1;
  14.  
  15. echo ("<font class='tekst'>" . $login . " vs " . $login1 . "<br><br>");
  16.  
  17. //chyba w tym miejscu powinna zacząć się pętla
  18.  
  19. $wynik = $zycie_p1 - $obrazenia; //pozostalo obroncy
  20. $wynik1 = $zycie_p - $obrazenia1; //pozostalo atakujacemu
  21.  
  22. if ($zycie_p>0) {include 'atakuj.php';}
  23. else { echo ("Twój potwór nie jest w stanie walczyc<br>"); }
  24.  
  25. include 'odczytaj_obrona.php';
  26.  
  27. if ($zycie_p1<=&& $zycie_p>0) { echo ("Wygrales walke z " . $login1); }
  28.  
  29. else {
  30.  if ($zycie_p1>&& $zycie_p>0) {include 'bron.php';}
  31.  if ($zycie_p<&& $zycie_p1>0) { echo ("Przegrales walke z " . $login); }
  32.  }
  33. //a tu chyba się skończyć
  34. ?>


odczytaj_atak.php
  1. <? //odczytaj_atak.php
  2. $wybierz = "SELECT * FROM `uzytkownik` WHERE login = '$login' AND haslo = '$haslo'";
  3. $pokaz = mysql_query($wybierz); 
  4. while ($wiersz = mysql_fetch_array($pokaz)) {
  5. $login = $wiersz[login];
  6. $sila_p = $wiersz[sila_p];
  7. $zycie_p = $wiersz[zycie_p];
  8. $potwor = $wiersz[potwor];
  9. }
  10. ?>


odczytaj_obrona.php
  1. <? //odczytaj_obrona.php
  2. $wybierz1 = "SELECT * FROM `uzytkownik` WHERE id = '$id_uzytk'";
  3. $pokaz1 = mysql_query($wybierz1); 
  4. while ($wiersz1 = mysql_fetch_array($pokaz1)) {
  5. $login1 = $wiersz1[login];
  6. $sila_p1 = $wiersz1[sila_p];
  7. $zycie_p1 = $wiersz1[zycie_p];
  8. $potwor1 = $wiersz1[potwor];
  9. }
  10. ?>


atakuj.php
  1. <? //atakuj.php
  2. $wynik = $zycie_p1 - $obrazenia; //pozostalo obroncy
  3.  
  4. if ($wynik<0) {$wynik=0;}
  5. $wynik_kon = "UPDATE `uzytkownik` SET zycie_p = '$wynik' WHERE id = '$id_uzytk'";
  6. $zapisz = mysql_query ($wynik_kon);
  7. echo ("<font class='tekst'>" . $potwor . " atakuje " . $potwor1 . " i zadaje mu " . $obrazenia . " obrazen (zostalo " . $wynik . ")<br>");
  8. ?>


bron.php
  1. <? //bron.php
  2. $wynik1 = $zycie_p - $obrazenia1; //pozostalo atakujacemu
  3.  
  4. if ($wynik1<0) {$wynik1=0;}
  5. $wynik_kon1 = "UPDATE `uzytkownik` SET zycie_p = '$wynik1' WHERE login = '$login' AND haslo = '$haslo'";
  6. $zapisz1 = mysql_query ($wynik_kon1);
  7. echo ("<font class='tekst'>" . $potwor1 . " atakuje " . $potwor . " i zadaje mu " . $obrazenia1 . " obrazen (zostalo " . $wynik1 . ")<br>");
  8. ?>
Ludvik
  1. <?php
  2. $zycie_p1 = 100;
  3. $zycie_p = 100;
  4.  
  5. while ($zycie_p1 > 0 && $zycie_p > 0) {
  6. // CIACH
  7. $zycie_p1 -= rand(1,10);
  8. if ($zycie_p1 > 0) {
  9. // CIACH
  10. $zycie_p -= rand(1,10):
  11. }
  12. }
  13.  
  14. echo $zycie_p1 . ' ' . $zycie_p;
  15. ?>


Tak to w przybliżeniu wygląda... Podstaw swój algorytm zadawania ciosów do tej pętli...
Chemiq
wielkie dzięki. teraz działa dokładnie tak jak chciałem.

a teraz jeszcze takie drobne pytanie. czy jest jakaś funkcja która losuje liczbę niecałkowitą z konkretnego przedziału (bo rand() wybiera tylko całkowite).
nospor
Cytat
a teraz jeszcze takie drobne pytanie. czy jest jakaś funkcja która losuje liczbę niecałkowitą z konkretnego przedziału (bo rand() wybiera tylko całkowite).
Tu trzeba troche.... pomyslec smile.gif
  1. <?php
  2. $liczba = (float)(rand(0,10).'.'.rand(0,99));
  3. echo $liczba;
  4. ?>
Chemiq
a w ten sposób. nie przyszłoby mi do głowy. wielkie dzięki smile.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.