Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] wyswietlanie nie minusowych sum
Forum PHP.pl > Forum > Przedszkole
matuty
Witam mam problem stworzylem skrypt walki i próbowałem zrobi tak że jeśli ktoś z przeciwników ma ujemne zycie to skrypt najpierw sprawdza kto miał go mniej a potem zamienia ta wartosc na zero ale coś nie pyklo pomoglibyscie? smile.gif

  1.  
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <?php
  7.  
  8. require_once('config.php');
  9. $id = $_SESSION['id'];
  10. if(isset($_SESSION['login'])){
  11. if(isset($_POST['atakuj'])){
  12.  
  13. $przeciwnik = $_POST['przeciwnik'];
  14.  
  15. if(isset($przeciwnik) && $przeciwnik != $_SESSION['login']){
  16. db_connect();
  17. $przeciwnik = mysql_query("SELECT * FROM `users` WHERE `user_name` = '$przeciwnik' LIMIT 1");
  18.  
  19. if(mysql_num_rows($przeciwnik) > '0'){
  20.  
  21. $przeciwnik = mysql_fetch_assoc($przeciwnik);
  22. $agresor = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `user_id` = '$id'"));
  23.  
  24.  
  25. $agresor['zycie'] = 5000;
  26. $przeciwnik['zycie'] = 5000;
  27.  
  28. $agresor['wytrwalosc'] = 100;
  29. $przeciwnik['wytrwalosc'] = 100;
  30. $rundy = '50';
  31.  
  32. for($i = 1;$i <= $rundy;$i++){
  33.  
  34. $cios = (INT)($agresor['sila'] + $agresor['zrecznosc'])*2
  35. + $agresor['obr_wiatru']*2 + rand($agresor['sila'],$agresor['zrecznosc']) + $agresor['inteligencja'] * 3;
  36.  
  37. $obrona_atakujacy = ($agresor['obrona'] + $agresor['zrecznosc']) * 2;
  38.  
  39. $obrona_przeciwnik = ($przeciwnik['obrona'] + $przeciwnik['zrecznosc']) * 2;
  40.  
  41. $obrazenia = rand(24,60);
  42.  
  43. $sila_ataku = (INT)($cios + $obrazenia + $agresor['wytrwalosc'] + rand(10,40));
  44.  
  45. $sila_ataku_minus = $sila_ataku - $obrona_przeciwnik;
  46.  
  47. $przeciwnik['zycie'] = $przeciwnik['zycie'] - $sila_ataku_minus;
  48.  
  49.  
  50. echo 'runda '.$i.'<br> przeciwnik obronił'.$obrona_przeciwnik.' obrazen.<br>zadałeś '.$sila_ataku_minus.'<br>';
  51.  
  52.  
  53.  
  54.  
  55. $cios = (INT)($przeciwnik['sila'] + $przeciwnik['zrecznosc'])*2
  56. + $przeciwnik['obr_wiatru']*2 + rand($przeciwnik['sila'],$przeciwnik['zrecznosc']) + $przeciwnik['inteligencja'] * 3;
  57.  
  58. $obrazenia = rand(24,60);
  59.  
  60. $sila_ataku = (INT)($cios + $obrazenia + $przeciwnik['wytrwalosc'] + rand(10,40));
  61.  
  62. $sila_ataku_minus = $sila_ataku - $obrona_atakujacy;
  63.  
  64. $agresor['zycie'] = $agresor['zycie'] - $sila_ataku_minus;
  65.  
  66.  
  67. echo 'obroniles'.$obrona_atakujacy.' obrazen.<br>dostałes '.$sila_ataku_minus.'<br> twoje zycie -'.$agresor['zycie'].'<br> zycie przeciwnika - '.$przeciwnik['zycie'].'<br><br>';
  68.  
  69. if($agresor['zycie'] <= 0 || $przeciwnik['zycie'] <= 0){
  70.  
  71. if($agresor['zycie'] < $przeciwnik['zycie'])
  72. {
  73. $agresor['zycie'] = '0';
  74. echo "przegrałeś a broniącemu zostało ".$przeciwnik['zycie'];
  75. break;
  76. }elseif($przeciwnik['zycie'] < $agresor['zycie'])
  77. $przeciwnik['zycie'] = '0';
  78. echo "wygrałeś i zostało ci ".$agresor['zycie'];
  79. break;
  80. }
  81.  
  82.  
  83.  
  84. }
  85.  
  86. }else{
  87. echo "niema takiego gracza";
  88. }
  89. }elseif($przeciwnik != ''){
  90. echo 'niemożesz atakować sam siebie!';
  91. }
  92.  
  93. }else{
  94.  
  95. echo 'twoja postac to'.' '.$_SESSION['login'];
  96.  
  97. echo<<<END
  98.  
  99. zaatakuj przeciwnika:<br>
  100.  
  101. <form action"" method="post">
  102. <input type="text" name="przeciwnik"/><br>
  103. <input type="submit" value="atakuj" name="atakuj"/>
  104. </form>
  105.  
  106. END;
  107. }
  108. }else{
  109. echo 'zaloguj się!';
  110. }
  111. ?>
kapslokk
Co konkretnie nie pykło?

  1. if ($agresor['zycie'] <= 0 || $przeciwnik['zycie'] <= 0) {
  2.  
  3. if ($agresor['zycie'] < $przeciwnik['zycie']) {
  4. $agresor['zycie'] = '0';
  5. echo "przegrałeś a broniącemu zostało " . $przeciwnik['zycie'];
  6. break;
  7. } elseif ($przeciwnik['zycie'] < $agresor['zycie'])
  8. $przeciwnik['zycie'] = '0';
  9. echo "wygrałeś i zostało ci " . $agresor['zycie'];
  10. break;
  11. }

Ten fragment wydaje się być ok, ale sprawdzasz warunek dopiero po odjęciu hp obu stronom. Co w wypadku gdy obie strony będą miały np po 1 hp, a Ty im odejmiesz coś jeszcze od tego? Oboje będą martwi, a tego nie przewidziałeś.
matuty
Dzięki za odp w sumie już trochę przerobilem kod tak jak chciałem ale uwzgledznie jeszcze remis 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.