Autor | Zpráva | ||
---|---|---|---|
PHP_Nemaster Profil |
#1 · Zasláno: 1. 5. 2009, 18:36:07 · Upravil/a: PHP_Nemaster
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 |
#2 · Zasláno: 1. 5. 2009, 18:46:29 · Upravil/a: regy
<?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 |
#3 · Zasláno: 1. 5. 2009, 21:38:34
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 |
#4 · Zasláno: 2. 5. 2009, 08:41:24
Děkuju. Ani mě nenapadlo, že to může být tak snadné. :D
|
||
Nox Profil |
#5 · Zasláno: 2. 5. 2009, 09:00:18
PHP_Nemaster
$v = max($cislo1-$cislo2,0); |
||
Joker Profil |
#6 · Zasláno: 2. 5. 2009, 09:13:57
Nox
...anebo totéž jinak: $v = ($cislo2 > $cislo1) ? 0 : ($cislo1 - $cislo2); |
||
blizz_boz Profil |
#7 · Zasláno: 2. 5. 2009, 12:09:50
Joker
inak nwm ci je prave najstastnejsie riesenie pouzivat ternarny operator http://latrine.dgx.cz/php-puvab-optimalizace-rychlosti |
||
Alphard Profil |
#8 · Zasláno: 2. 5. 2009, 12:16:18
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. |
||
Časová prodleva: 15 dní
|
|||
regy Profil |
#9 · Zasláno: 17. 5. 2009, 08:53:17
imploder
To jsem psal ;-). |
||
AM_ Profil |
#10 · Zasláno: 17. 5. 2009, 09:01:37
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í ;) |
||
Časová prodleva: 15 let
|
0