| 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: 14 let
|
|||
0