Autor Zpráva
Magnus123
Profil
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
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;
  }
  …
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: