Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Dwa problemy ze skryptem
Forum PHP.pl > Forum > PHP
tumeks
Witam! Mam kilka problemów ze skryptem juz nie moge sobie porawdzic może znajdzie sie ktoś kto mi pomoże smile.gif.

- jesli skrypt zostanie wykonany to pokazuje mi wszytkie tury oprocz osatniej, poprostru nie zostaje wyswietlona.
- Czy można jakimś leprzym sposobem wyliczyc szanse trafienia potwora lub postaci bo tak jak mam anpsiane nie zabardzo się sprawdza i nie dziła prawidłowo.
  1. <?
  2. $result1 = mysql_query("select * from potwory WHERE id = '".$_GET['id']."'");
  3. $row1 = mysql_fetch_array($result1);
  4. ?>
  5. <td bgcolor="#B2B3CA"><div align="center"><strong><? echo $row1['nazwa']; ?></strong></div></td>
  6. <td bgcolor="#B2B3CA"><div align="center"><? echo $row1['atak']; ?></div></td>
  7. <td bgcolor="#B2B3CA"><div align="center"><? echo $row1['obrona']; ?></div></td>
  8. <td bgcolor="#B2B3CA"><div align="center"><? echo "".$row1['obr_min']."-".$row1['obr_max'].""; ?></div></td>
  9. <td bgcolor="#B2B3CA"><div align="center">-</div></td>
  10. </tr>
  11. </table>
  12. <br>
  13. <br>
  14. <?
  15. $tura = "0";
  16. //POSTAC
  17. $atakpostaci = $row['atak'];
  18. $obronapostaci = $row['obrona'];
  19. $nazwapostaci = $row['nazwa'];
  20. $obr_min = $row['obr_min'];
  21. $obr_max = $row['obr_max'];
  22. $hppostaci = $row['hpmin'];
  23. $hppostacical = $row['hp'];
  24. //POTWOR
  25. $atakpotwora = $row1['atak'];
  26. $obronapotwora = $row1['obrona'];
  27. $nazwapotwora = $row1['nazwa'];
  28. $obr_min_pot = $row1['obr_min'];
  29. $obr_max_pot = $row1['obr_max'];
  30. $hppotwora = $row1['hp'];
  31.  
  32. $obrazeniapostaci = rand($obr_min, $obr_max);
  33. $obrazeniapotwora = rand($obr_min_pot, $obr_max_pot);
  34. $obliczhppostaci = $hppostaci - $obrazeniapotwora;
  35. $obliczhppowora = $hppotwora - $obrazeniapostaci;
  36.  ?>
  37. <br>
  38. <table width="75%" BORDER RULES="all">
  39. <tr> 
  40. <td width="9%" bgcolor="#8BA6B4"><strong>Tura:</strong></td>
  41. <td width="24%" bgcolor="#8BA6B4"><strong>Osoba:</strong></td>
  42. <td width="20%" bgcolor="#8BA6B4"><strong>Życie:</strong></td>
  43. <td width="18%" bgcolor="#8BA6B4"><strong>Obrażenia:</strong></td>
  44. <td width="29%" bgcolor="#8BA6B4"><strong>Bonus:</strong></td>
  45. </tr>
  46. <?
  47. for($i=0;$obliczhppostaci >= 0 and $obliczhppowora >= 0; $i++) 
  48. { 
  49. if($color == "#E2E5EE") { $color = "#B2B3CA"; }
  50. else { $color = "#E2E5EE"; }
  51. //SZNSA TRAFIENIA
  52. $szansatrafieniapotwora = ceil($obronapostaci / $atakpotwora);
  53. $szansatrafieniapostaci = ceil($obronapotwora / $atakpostaci); 
  54. $szansatrafieniapotwora1 = rand($szansatrafieniapotwora, 100);
  55. $szansatrafieniapostaci1 = rand($szansatrafieniapostaci, 100);
  56.  
  57.  
  58. $tura++;
  59.  ?>
  60. <tr> 
  61. <td bgcolor="<? echo $color; ?>" rowspan="2"><div align="center"><? echo $tura; ?></div></td>
  62. <td bgcolor="<? echo $color; ?>"><div align="center"><strong><? echo $nazwapostaci; ?></strong></div></td>
  63. <td bgcolor="<? echo $color; ?>"><div align="center"><font color="green"> <? echo "".$obliczhppostaci." / ".$hppostacical.""; ?></font></div></td>
  64. <td bgcolor="<? echo $color; ?>"><font color="red"> 
  65. <div align="center"><? if($obrazeniapostaci == 0) { echo "<font color=green><b>Chybił</b></font>"; } else { echo $obrazeniapostaci; } ?></div>
  66. </font></td>
  67. <td bgcolor="<? echo $color; ?>"><div align="center">-</div></td>
  68. </tr>
  69. <tr> 
  70. <td bgcolor="<? echo $color; ?>"><div align="center"><? echo $nazwapotwora; ?></div></td>
  71. <td bgcolor="<? echo $color; ?>"><div align="center"><font color="blue"> <? echo "".$obliczhppowora." / ".$hppotwora.""; ?></font></div></td>
  72. <td bgcolor="<? echo $color; ?>"><font color="blue"> 
  73. <div align="center"><? if($obrazeniapotwora == 0) { echo "<font color=black>Chybił</font>"; } else { echo $obrazeniapotwora; } ?></div>
  74. </font></td>
  75. <td bgcolor="<? echo $color; ?>"><div align="center">-</div></td>
  76. </tr>
  77. <?
  78. //OBRAZENIA
  79. if($szansatrafieniapotwora1 > 55) {
  80. $obrazeniapotwora = 0;
  81. $obliczhppostaci = $obliczhppostaci - $obrazeniapotwora;
  82. } else {
  83. $obrazeniapotwora = rand($obr_min_pot, $obr_max_pot);
  84. $obliczhppostaci = $obliczhppostaci - $obrazeniapotwora;
  85.  
  86. } if($szansatrafieniapostaci1 > 55) {
  87. $obrazeniapostaci = 0;
  88. $obliczhppowora = $obliczhppowora - $obrazeniapostaci;
  89. } else {
  90. $obrazeniapostaci = rand($obr_min, $obr_max);
  91. $obliczhppowora = $obliczhppowora - $obrazeniapostaci;
  92. } }
  93. ?>


Z góry dzięki za pomoc
Tomek
mat_1200
Nie zabardzo rozumie o co ci chodzi z pierwszym pytaniem ale na drugi moge ci pomóc:

Sproboj zrobic funkcje rand() z liczbami np.10000 i 99999. Następnie postaw warunek, jesli liczba ta jest podzielna przez[liczba pkt. ataku - liczba pkt obrony] to rob to...(czyli tam dalej co ma byc...)
matrach
1.) Troche pozmieniałem kolejność, dodałem coś od siebie.
Zmienione miejsca oznaczone są komentem.
Mała uwaga: powinieneś najpierw zmieniać wartość a potem je wypisywać.
Z tego co zrozumiałem z twojego warunku potwór żyje dopuki jego hp nie jest na minusie.
  1. <?php //...Te przypisania twoje itd....
  2.  $obrazeniapostaci = rand($obr_min, $obr_max);
  3. $obrazeniapotwora = rand($obr_min_pot, $obr_max_pot);
  4. //Obrażenia będą w w for
  5. $obliczhppostaci = $hppostaci;
  6. $obliczhppowora = $hppotwora;
  7.  ?>
  8. <br>
  9. <table width="75%" BORDER RULES="all">
  10. <tr> 
  11. <td width="9%" bgcolor="#8BA6B4"><strong>Tura:</strong></td>
  12. <td width="24%" bgcolor="#8BA6B4"><strong>Osoba:</strong></td>
  13. <td width="20%" bgcolor="#8BA6B4"><strong>Życie:</strong></td>
  14. <td width="18%" bgcolor="#8BA6B4"><strong>Obrażenia:</strong></td>
  15. <td width="29%" bgcolor="#8BA6B4"><strong>Bonus:</strong></td>
  16. </tr>
  17. <?
  18. for($i=0;$obliczhppostaci >= 0 && $obliczhppowora >= 0; $i++) 
  19. { 
  20. if($color == "#E2E5EE") { $color = "#B2B3CA"; }
  21. else { $color = "#E2E5EE"; }
  22. //SZNSA TRAFIENIA
  23. $szansatrafieniapotwora = ceil($obronapostaci / $atakpotwora);
  24. $szansatrafieniapostaci = ceil($obronapotwora / $atakpostaci); 
  25. $szansatrafieniapotwora1 = rand($szansatrafieniapotwora, 100);
  26. $szansatrafieniapostaci1 = rand($szansatrafieniapostaci, 100);
  27.  
  28. //OBRAZENIA
  29. //Teraz są z przodu (opis pod kodem)
  30. if($szansatrafieniapotwora1 > 55) {
  31. $obrazeniapotwora = 0;
  32. $obliczhppostaci = $obliczhppostaci - $obrazeniapotwora;
  33. } else {
  34. $obrazeniapotwora = rand($obr_min_pot, $obr_max_pot);
  35. $obliczhppostaci = $obliczhppostaci - $obrazeniapotwora;
  36.  
  37. } if($szansatrafieniapostaci1 > 55) {
  38. $obrazeniapostaci = 0;
  39. $obliczhppowora = $obliczhppowora - $obrazeniapostaci;
  40. } else {
  41. $obrazeniapostaci = rand($obr_min, $obr_max);
  42. $obliczhppowora = $obliczhppowora - $obrazeniapostaci;
  43. }
  44.  
  45. $tura++;
  46.  ?>
  47. <tr> 
  48. <td bgcolor="<? echo $color; ?>" rowspan="2"><div align="center"><? echo $tura; ?></div></td>
  49. <td bgcolor="<? echo $color; ?>"><div align="center"><strong><? echo $nazwapostaci; ?></strong></div></td>
  50. <td bgcolor="<? echo $color; ?>"><div align="center"><font color="green">
  51.  <? //Chyba byś nie chciał widzieć -5 hp?(opis niżej)
  52.  if ($obliczhppostaci < 0) echo "Zginął"; else echo "".$obliczhppostaci." / ".$hppostacical.""; ?></font></div></td>
  53. <td bgcolor="<? echo $color; ?>"><font color="red"> 
  54. <div align="center"><? if($obrazeniapostaci == 0) { echo "<font color=green><b>Chybił</b></font>"; } else { echo $obrazeniapostaci; } ?></div>
  55. </font></td>
  56. <td bgcolor="<? echo $color; ?>"><div align="center">-</div></td>
  57. </tr>
  58. <tr>
  59. <td bgcolor="<? echo $color; ?>"><div align="center"><? echo $nazwapotwora; ?></div></td>
  60. <td bgcolor="<? echo $color; ?>"><div align="center"><font color="blue">
  61.  <? // to co wyżej
  62. if ($obliczhppowora < 0) echo "Zginął"; else echo "".$obliczhppowora." / ".$hppotwora.""; ?></font></div></td>
  63. <td bgcolor="<? echo $color; ?>"><font color="blue"> 
  64. <div align="center"><? if($obrazeniapotwora == 0) { echo "<font color=black>Chybił</font>"; } else { echo $obrazeniapotwora; } ?></div>
  65. </font></td>
  66. <td bgcolor="<? echo $color; ?>"><div align="center">-</div></td>
  67. </tr>
  68. <?
  69.  
  70.  }

-Walka jest najpierw, gdyż wyświetlał sie wynik a potem była kolejna tura, ktoś miał potem hp na minusie i sie nie spełnił warunek for
- Jeśli ktoś kogoś zabije, chyba nie chciałbyś widzieć hp -1/50? Zamieniłem za "Zginął". Wtedy pętla wykonuje się ostatni raz.
2.)
Wykorzystaj liczbe sekund od 1.01.1970 0:00:00 time() tongue.gif
(nie uwzględniłem tego w podanym kodzie )
3.)
Możesz zamiast <?php echo $zmienna ?> używać <?=$zmienna?>. Będzie ten sam wynik.
(tego też nie pozmieniałem, jak chcesz to sobie zmień tongue.gif )
4.) Zapomniałem ... laugh.gif
Ah tak przypomniałem sobie...
Ten "powór" to był specjalnie?
tumeks
Dziękuje bardzo za pomoc ale nadal jeszcze bym musial zmienic sznse trafienia poniewaz jak potworowi przypisze 800 obrony a ja mam 87 ataku ( tak dla przykladu) to i tak ja wiecej trafiam od niego ;/ a nie powinienem w niego wogule trafiac zna ktos jakomś leprza metodie na obliczenie tego?

P.S. Ten powór przypadkowo wyszedl tongue.gifP
matrach
Po niedługim kombinowaniu doszedłem do ciekawego algorytmu:
  1. <?php
  2. $atak = 87;
  3. $obr = 800;
  4. // Zawsze lubie kombinować z PI
  5. $szansa = ceil(-($obr * M_PI / $atak));
  6. $szansa_min = ceil(($atak / $obr * M_PI) * 100);
  7. $sz1 = min($szansa, $szansa_min);
  8. $sz2 = max($szansa, $szansa_min);
  9. $traf = rand($sz1, $sz2);
  10. echo 'Sznsa na trafienie wynosi: ' . $traf; 
  11. ?>

Myśle że chyba będziesz musiał podnieść poprzeczkę trafienia
Oczywiście mam nadzieje że wartośći obrony lub ataku nie będą na minusie...
Bo wtedy raczej będzie ciężko trafić...
tumeks
Dzięki za wszytko włąśnie dałem wersje BETA (http://knights.fanfilled.com/) Zapraszam do testowania szczególnie systemu walki ;].

Pozdro
Vogel
tka technicznie: zamiast "wiek" daj "rok urodzenia"...

jeezu... i znowu te "mroczne elfy" <żyg>
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.