Autor Zpráva
PHP_Nemaster
Profil
Dobrý den,
nevíte, jak nějak omezit, aby se při odčítání nešlo pod nulu? Vytvářím takovou bojovou hru a když tam bojují dvě armády a jedna druhou zabije a přitom má sílu aby ji zabila třeba dvakrát, tak to jde pod nulu a je přece nesmysl, aby se říkalo například "V boji zahynulo
-268 vojáků."

Toto je kód:
_____________________________________________________

<?php
$con = mysql_connect('mysql.webzdarma.cz', 'databaze', 'heslo')
or die( mysql_error() );

mysql_select_db('databaze'); ?>

<html>

<?php

$atw = $_POST['attack'];
$defense = 12;
$alive_defense = $defense - $atw;
$alive_attack = $atw - $defense;


$sql = "INSERT INTO attacks (Vojaci) VALUES ('".$_POST['attack']."')";
$query = mysql_query ($sql) or die (mysql_error() );

?>
<pre>
Attack: <?php echo $atw; ?>

Alive: <?php echo $alive_attack; ?>


Defense: <?php echo $guard; ?>

Alive: <?php echo $alive_defense; ?>
</pre>

</html>
_____________________________________________________

A nebo nevíte jak se udělá, aby se místo přeživších zobrazovali zabití? To by se totiž ta nula vůbec nemusela řešit. ( Lámu si nad tím hlavu celý den a proto jsem to jednuduše udělal odčítáním, jak vidít v kódu.)

Předem děkuji za odpověd'.
regy
Profil
<?php
$con = mysql_connect('mysql.webzdarma.cz', 'databaze', 'heslo')
or die( mysql_error() );

mysql_select_db('databaze'); ?>

<html>

<?php

$atw = $_POST['attack'];
$defense = 12;
$alive_defense = $defense - $atw;
$alive_attack = $atw - $defense;

if($alive_defense < 0)
  $alive_defense = 0;
if($alive_attack < 0)
  $alive_attack = 0;

$sql = "INSERT INTO attacks (Vojaci) VALUES ('".$_POST['attack']."')";
$query = mysql_query ($sql) or die (mysql_error() );

?>
<pre>
Attack: <?php echo $atw; ?>

Alive: <?php echo $alive_attack; ?>


Defense: <?php echo $guard; ?>

Alive: <?php echo $alive_defense; ?>
</pre>


Jesli jsem to dobře pochopil, tak to stačí pouze takto :-)
imploder
Profil
PHP_Nemaster
Nejsem si jistý, v čem je problém. Pokud se prostě má odečíst číslo a záporný výsledek oříznout na nulu, pak
$v = $cislo1 - $cislo2; if($v < 0) $v = 0;

to řeší.
PHP_Nemaster
Profil
Děkuju. Ani mě nenapadlo, že to může být tak snadné. :D
Nox
Profil
PHP_Nemaster
$v = max($cislo1-$cislo2,0);
Joker
Profil
Nox
...anebo totéž jinak: $v = ($cislo2 > $cislo1) ? 0 : ($cislo1 - $cislo2);
blizz_boz
Profil
Joker

inak nwm ci je prave najstastnejsie riesenie pouzivat ternarny operator

http://latrine.dgx.cz/php-puvab-optimalizace-rychlosti
Alphard
Profil
blizz_boz:
Tohle AFAIK není případ, kdy by to mělo nějaký význam.
Důležitá věta odkazovaného článku: Stačí, aby proměnná $x obsahovala delší řetězec nebo pole. To nesplňujeme.
regy
Profil
imploder
To jsem psal ;-).
AM_
Profil
nejlepší je to co píše Nox, ostatní jsou zbytečně roztáhlé.
blizz_boz
četl jsi vůbec ten článek? :) pokud jsi si nepřečetl jen první odstavec, z principu toho reference-counting je jasné, že v tomhle případě to vážně zpomalením není ;)

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: