Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Dwa problemy ze skryptem
tumeks
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 10.11.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
mat_1200
post
Post #2





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 17.12.2005

Ostrzeżenie: (0%)
-----


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...)
Go to the top of the page
+Quote Post
matrach
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 17.04.2006

Ostrzeżenie: (0%)
-----


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?

Ten post edytował matrach 25.04.2006, 22:54:41
Go to the top of the page
+Quote Post
tumeks
post
Post #4





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 10.11.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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

Ten post edytował tumeks 26.04.2006, 10:33:55
Go to the top of the page
+Quote Post
matrach
post
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 17.04.2006

Ostrzeżenie: (0%)
-----


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ć...

Ten post edytował matrach 27.04.2006, 23:19:58
Go to the top of the page
+Quote Post
tumeks
post
Post #6





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 10.11.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dzięki za wszytko włąśnie dałem wersje BETA (http://knights.fanfilled.com/) Zapraszam do testowania szczególnie systemu walki ;].

Pozdro
Go to the top of the page
+Quote Post
Vogel
post
Post #7





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

Ostrzeżenie: (0%)
-----


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

jeezu... i znowu te "mroczne elfy" <żyg>


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 07:50