Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zapętlenie
Lethys
post
Post #1





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

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


Pisze skrypt walki dwóch kont :


  1. <?php
  2. $mypower = rand($pistolet[dmin],$pistolet[dmax])+$stat[hp]/10+$stat[strzelanie];
  3. $edefense = rand($pistolet2[dmin],$pistolet2[dmax])+$enemy[hp]/10+$enemy[refleks];
  4. $mydef = rand($pistolet[dmin],$pistolet[dmax])+$stat[hp]/10+$stat[refleks];
  5. $epower = rand($pistolet2[dmin],$pistolet2[dmax])+$enemy[hp]/10+$enemy[strzelanie];
  6.  
  7. if ($stat[miasto] != $enemy[miasto] or $stat[page] != $enemy[page]){
  8.  
  9. print "Aby walczyć z przeciwnikiem musisz być w tym samym mieście oraz w tym samym pomieszczeniu co przeciwnik.";
  10. echo '<br><br><h1><center><a href=' . $stat[miasto] . '.php>wróć do miasta</a><h1></center>';
  11.  
  12.  
  13. }else{
  14. print "<center><b>$stat[user] vs $enemy[user]</b><br>";
  15. print "<center><br><img border=\"0\" src=\"$stat[avatar]\" width=\"80\" height=\"80\">";
  16. print " <b>VS</b> ";
  17. print "<img border=\"0\" src=\"$enemy[avatar]\" width=\"80\" height=\"80\"></center><br><br>";
  18.  
  19. $mojehp = ' . stat[hp] . ';
  20. $ehp = ' . enemy[hp] . ';
  21.  
  22. while ($mojehp==0 or $ehp==0){
  23. $los = rand(1,4);
  24. If ($los = 1 or $los = 2){
  25. $sila = 2;
  26. mysql_query("update players set hp=hp-$sila where id=$enemy[id]");
  27. print "<img src=\"images/good.jpg\">Strzelasz do <b>$enemy[user]</b>, zadejesz mu $sila obrażeń [pozostało $enemy[hp] życia]<br>";
  28. }
  29. }else{
  30. $sila = 2;
  31. mysql_query("update players set hp=hp-$sila where id=$stat[id]");
  32. print "<img src=\"images/bad.jpg\"><b>$enemy[user]</b> strzela do Ciebie i zadej Ci $sila obrażeń [pozostało $stat[hp] życia]<br>";
  33. }
  34. }
  35. }
  36. ?>


Ten skrypt powinien z kazda petla losowac kto uderzy i odejmowac 2 HP. Problem jest taki że atakuje zawsze tylko jeden gracz oraz nic nie odejmuje graczowi zycia.

Czyli user 1 atakuje 1000 razy usera 2 zadajac 2 pkt ograzen a ciagle przeciwnik ma 100 hp i walka sie nie konczy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Lethys
post
Post #2





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

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


Dzięki nospor (IMG:style_emoticons/default/smile.gif)

zrobiłem to tak :

  1. while($hp_moje > 0 && $hp_wroga > 0){
  2. $los = rand(1,4);
  3. If ($los = 1 or $los = 2){
  4. $sila = rand(1,5);
  5. $hp_wroga = $hp_wroga - $sila;
  6. mysql_query("update players set hp=hp-$sila where id=$enemy[id]") or die(mysql_error());
  7. print "<img src=\"images/good.jpg\">Strzelasz do <b>$enemy[user]</b>, zadejesz mu $sila obrażeń [pozostało $hp_wroga życia]<br>";
  8. }elseif ($los = 3 or $los = 4){
  9. $sila = rand(1,5);
  10. $hp_moje = $hp_moje - $sila;
  11. mysql_query("update players set hp=hp-$sila where id=$stat[id]") or die(mysql_error());
  12. print "<img src=\"images/bad.jpg\"><b>$enemy[user]</b> strzela do Ciebie i zadej Ci $sila obrażeń [pozostało $hp_moje życia]<br>";
  13. }
  14. }
  15. }


I teoretycznie działa, tylko właśnie jest kolejny problem.

W pętli nie losuje kto będzie atakować tylko wyświetla.

Cytat
Strzelasz do lolek, zadejesz mu 2 obrażeń [pozostało 98 życia]
Strzelasz do lolek, zadejesz mu 5 obrażeń [pozostało 93 życia]
Strzelasz do lolek, zadejesz mu 4 obrażeń [pozostało 89 życia]
Strzelasz do lolek, zadejesz mu 4 obrażeń [pozostało 85 życia]
Strzelasz do lolek, zadejesz mu 1 obrażeń [pozostało 84 życia]
Strzelasz do lolek, zadejesz mu 1 obrażeń [pozostało 83 życia]
Strzelasz do lolek, zadejesz mu 1 obrażeń [pozostało 82 życia]
Strzelasz do lolek, zadejesz mu 2 obrażeń [pozostało 80 życia]
...


przecież w kodzie mam zaraz na początku pętli zrobione losowanie.

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 03:32