Problème avec elseif

Eléphanteau du PHP | 26 Messages

05 sept. 2011, 22:05

/* Vos soldats attaquent les soldats ennemis ou les archers*/
	if(($nombre_de_soldats > 0) && ($nombre_de_soldats_alpha > 0))
	{
	echo "<p>Vos $nombre_de_soldats soldats attaquent les $nombre_de_soldats_alpha soldats ennemis.</p>";
	$perte = floor(($nombre_de_soldats + $nombre_d_epees)/ 10);
		if ($perte > $nombre_de_soldats_alpha)
		{
		$perte = $nombre_de_soldats_alpha;
		}
		elseif ($perte < 0)
		{
		$perte = 0;
		}
	$nombre_de_soldats_alpha = $nombre_de_soldats_alpha - $perte;
	echo "<p>Ils tuent $perte soldats.</p><p><img src=\"soldat.jpg\"><img src=\"soldat ennemi.jpg\"></p>";
	}
	elseif (($nombre_de_soldats > 0)&&($nombre_de_soldats_alpha = 0)&&($nombre_d_archers_alpha > 0))
	{
	echo "<p>Vos $nombre_de_soldats soldats attaquent les $nombre_d_archers_alpha archers ennemis.</p>";
	$perte = floor (($nombre_de_soldats + $nombre_d_epees) / 10);
		if ($perte > $nombre_d_archers_alpha)
		{
		$perte = $nombre_d_archers_alpha;
		}
		elseif ($perte < 0)
		{
		$perte = 0;
		}
	$nombre_d_archers_alpha = $nombre_d_archers_alpha - $perte;
	echo "<p>Ils tuent $perte archers ennemis.</p><p><img src=\"soldat.jpg\"><img src=\"archer.jpg\"></p>";
	}
Bonjour,
je sollicite votre aide, car j'ai un problème:
Quand les tous les soldats d'Alpha sont morts, les soldats, bourrins et ninjas du joueur n'attaquent pas les archers d'Alpha, pourquoi?

Merci de ne pas me voler mon script!!! http://www.baston.tk
Modifié en dernier par Javeec le 06 sept. 2011, 22:04, modifié 3 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 sept. 2011, 23:42

Parce qu'ils sont fatigués ?

Je n'ai pas le courage de lire tout le code.. si une partie de ton script n'est pas exécutée, c'est que les conditions qui permettent de l'exécuter ne sont pas respecter... teste ces conditions une par une et regarde si cela correspond bien à ce que tu attends...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 sept. 2011, 23:46

salut,

désolé code trop dense.

la démarche pour mieux localiser la chose :
- savoir où se déroule le mécanisme d'action
- savoir d'où viennent les infos.

A partir de la tu peux ajouter des echo ou var_dump "un peu partout" pour suivre le cheminement de ton script et ainsi savoir pourquoi ton script ne fait pas ce que tu veux :)

Si tu réduit le code qui pose soucis on pourra jeter un oeil (la 250 lignes c'est trop ;) )

juste sur les premières lignes je vois des tas de variables qui ne sont déclarée null part, je pense que c'est dû à l'auto déclaration des variables (et c'est le mal )

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 26 Messages

06 sept. 2011, 21:46

je les ai déclarées, mais j'ai enlevé cette partie pour que se soit moins long.

Edit: J'ai enlevé la plus grosse partie.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 sept. 2011, 22:27

toujours la même réflexion, a tu comparé les conf des serveurs (via un phpinfo()) ?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 26 Messages

07 sept. 2011, 21:33

Je pense que le probleme est avec le premier elseif. On peut mettre 3 conditons comme je l'ai fait? J'ai essayé en changeant les && par AND (en enlevant les paranthèses superflues bien sûr.) J'ai aussi essayé de remplacé elseif par if. Ce n'est pas un problème de variable, puisque plus tard elles ont les valeurs qu'elles devraient avoir.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 sept. 2011, 22:33

Si les variables avaient les bonnes valeurs, les conditions seraient exécutées et tu n'aurais pas de problème...

Quelles sont tes valeurs ? Dans quelle conditions est-ce que tu passes (quelles sont les chaines qui sont affichées) ? dans quelles conditions devrais tu passer ? qu'est ce qui fait que tu ne passes pas dans la bonne condition ?

Un premier problème qui apparait dans le elseif, c'est l'affectation au lieu de la comparaison :
elseif (($nombre_de_soldats > 0)&&($nombre_de_soldats_alpha = 0)&&($nombre_d_archers_alpha > 0))
$nombre_de_soldats_alpha sera donc désormais égal à 0. La valeur 0 étant considérée par php comme un booléen false, le test ci-dessus sera toujours faux)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

08 sept. 2011, 21:27

je dois mettre deux signes d'égalité?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 sept. 2011, 22:05

Tout dépend de ce que tu veux faire :
$nombre_de_soldats_alpha = 0; // affecte la valeur 0 à $nombre_de_soldats_alpha

$nombre_de_soldats_alpha == 0; // compare la valeur de $nombre_de_soldats_alpha à la valeur 0
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

09 sept. 2011, 13:44

Je veux comparer le nombre de soldats à 0. Merci pour votre aide et désolé de vous avoir dérangé pour un "=".