Autor | Zpráva | ||
---|---|---|---|
Magnus123 Profil |
#1 · Zasláno: 18. 5. 2012, 20:53:14 · Upravil/a: Moderátor (editace znemožněna) 20. 5. 2012, 01:55:41
Ahoj.
Zkouším si takový script, a to rychlost útoku nějakých dvou bojovníků (budeme dále brát jen jednoho). Bojovník má rychlost útoku třeba 1.2 za 1 kolo. Znamená to, že 4 kola zaútočí 1x, páté kolo zaútočí 2x. Od šestého do desátého opět jen 1x a takhle dokola. Cílem je sestavit script, který toto zařídí. První návrh bylo toto: <?php $rychlost = 2.2; $kola = 1; $utok = 0; while ($kola <= 30) { // 30 útoků pro test $utok += $rychlost; $pocet_utoku = floor($utok - $kola + 1); echo "<b>Kolo ".$kola."</b><br />"; for ($i = 0; $i < $pocet_utoku; $i++) { echo "Útok<br />"; } if ($pocet_utoku > floor($rychlost)) { $utok = $utok - floor($utok) + $kola; } $kola++; echo "<br />"; } ?> Při hodnoty rychlosti 1.2 to bylo dobré. Ovšem při rychlosti 2.2 už nastávala chyba v tom, že se počet útoků zvyšoval a v kole 16 byly třeba 4 útoky. Jak na to? Je i snadné řešení a zbytečně si lámu hlavu? Moderátor Majkl578: Titulek „rychlost útoku“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
Radek9 Profil |
#2 · Zasláno: 18. 5. 2012, 21:53:45
Zkus na to spíš jít nějak takhle:
//Nadefinováno: $rychlost = 2.2; $bonus = 0; //Úprava $zaokrouhleno = floor($rychlost); $zbytek = $rychlost-$zaokrouhleno; while(…){ $bonus += $zbytek; $kolikrát = $zaokrouhleno; if($bonus>=1){ $aktuálníBonus = floor($bonus); $bonus -= $aktuálníBonus; $kolikrát += $aktuálníBonus; } … } |
||
Časová prodleva: 12 let
|
0