24-03-2008, 12:36 PM
(Modification du message : 08-09-2008, 07:10 PM par Sephi-Chan.)
bonjour,
j'ai un problème avec mon système d'attaque: une fonction qui augmente la puissance des tires en fonction des unités ennemis. Le probleme est si 2 unités différentes prennent pour cible une même unités
EX: 1 fantassin + 1 mitrailleur tire sur fantassin en sachant que les mitrailleurs ont un tire plus puissant sur les fantassins
là mon script me donne des valeurs qui n'ont rien à voir (comme une valeur négative)
le 2eme problème est si l'adversaire n'a pas l'unité choisi au hasard dans ce cas là je ne sais pas comment faire pour qu'il en choisis une autre voir qu'il évite cette valeur
voici le programme
$fetch['fantassin'] correspond au fantassin de l'adversairej'ai un problème avec mon système d'attaque: une fonction qui augmente la puissance des tires en fonction des unités ennemis. Le probleme est si 2 unités différentes prennent pour cible une même unités
EX: 1 fantassin + 1 mitrailleur tire sur fantassin en sachant que les mitrailleurs ont un tire plus puissant sur les fantassins
là mon script me donne des valeurs qui n'ont rien à voir (comme une valeur négative)
le 2eme problème est si l'adversaire n'a pas l'unité choisi au hasard dans ce cas là je ne sais pas comment faire pour qu'il en choisis une autre voir qu'il évite cette valeur
voici le programme
Code PHP :
<?php
function mitrailleur($mitrailleur,$fantassinD){
$valeur = rand(0, 20);//pour faire varier la puissance d'attaque
$valeur = $valeur / 100;
$pusbouclier = 30 * $fantassinD; //calcule de la puissance des bouclier
$puslife = 850 * $fantassinD; //calcule des point de vie des fantassin
$pusmitrailleur = (390 * $mitrailleur) * $valeur; //calcule de la puissance a ajouter en fonction du rand
$pusmitrailleur = (390 * $mitrailleur) + $pusmitrailleur; //calcule de la puissance des mitrailleur + la valeur calculer avent
$pusattaque = $pusmitrailleur - $pusbouclier; //calcule de la puissance d'attaque en enlevant la valeur des boucliers de la puissance total des mitrailleurs .
if($pusattaque < 0){ // si la puissance d'attaque est inférieur a 0 alors
$fantassinD = 0; // alors le total de fantassin de l'adversaire vos 0
}else{ //sinon on exécute le reste du script
$reste = $puslife - $pusattaque; // on enlève la puissance d'attaque des point de vie
if($reste>0){ //si il reste encore des fantassin en vie
$fantassinD = $reste / 850; // on divise pour retrouver le nombre de fantassin restent
$fantassinD = $fetch['fantassin'] - $fantassinD; //on le déduit du total pour avoir le nombre de perte
}else{ // si il reste personne en vie
$fantassinD = $fetch['fantassin'] ; // $fantassinD prend la valeur du nombre total de fantassin (voir a la fin du programme pour plus de détail)
}
return ($fantassinD);} //envoi du résultat
}
//attaque des fantassin joueur
if($fantassin>0){
$chiffre = rand(1, 6);//choix de l'uniter qui subira le tire
$valeur = rand(0, 20);
$valeur = $valeur / 100;
switch ($chiffre) {
case 1://si c'est contre des fantassin
$pusbouclier = 30 * $fetch['fantassin'];
$puslife = 850 * $fetch['fantassin'];
$pusfantassin = (120 * $fantassin) * $valeur;
$pusfantassin = (120 * $fantassin) + $pusfantassin;
$pusattaque = $pusfantassin - $pusbouclier;
if($pusattaque<0){
$fantassinD = $fetch['fantassin'];
}else{
$reste = $puslife - $pusattaque;
if($reste>0){
$fantassinD = $reste / 850;
$fantassinD = $fetch['fantassin'] - $fantassinD;
}else{
$fantassinD = $fetch['fantassin'];}
}
break;
case 2://si c'est contre des mitrailleur
$pusbouclier = 40 * $fetch['mitrailleur'];
$puslife = 1300 * $fetch['mitrailleur'];
$pusfantassin = (120 * $fantassin) * $valeur;
$pusfantassin = (120 * $fantassin) + $pusfantassin;
$pusattaque = $pusfantassin - $pusbouclier;
if($pusattaque<0){
$mitrailleurD = $fetch['mitrailleur'];
}else{
$reste = $puslife - $pusattaque;
if($reste>0){
$mitrailleurD = $reste / 1500;
$mitrailleurD = $mitrailleur - $mitrailleurD;
}else{
$mitrailleurD = $mitrailleur;}
}
break;
//tire des mitrailleur joueur
if($mitrailleur>0 AND $fetch['fantassin']>0)//si l'adversaire a des fantassin ferre un tire plus puissent
{
$fantassinDR = mitrailleur ($mitrailleur , $fetch['fantassin']);
}elseif($mitrailleur>0){
$valeur2 = rand(0, 20);
$valeur2 = $valeur2 / 100;
switch ($valeur2) {
case 2:
$pusbouclier = 40 * $fetch['mitrailleur'];
$puslife = 1300 * $fetch['mitrailleur'];
$puimitrailleur = ( 170 * $mitrailleur) * $valeur;
$pusmitrailleur = (170 * $mitrailleur) + $pusmitrailleur;
$pusattaque = $pusmitrailleur - $pusbouclier;
if($pusattaque<0){
$mitrailleurD = $fetch['mitrailleur'];
}else{
$reste = $puslife - $pusattaque;
if($reste>0){
$mitrailleurD1 = $reste / 1500;
$mitrailleurD1 = $mitrailleur - $mitrailleurD1;
}else{
$mitrailleurD1 = $mitrailleur;}
}
break;
//total des uniters de l'adversaire retente
$fantassinD = $fetch['fantassin'] - $fantassinDR- $fantassinD; //total des fantassin - toute les valeur calculer pour voir le nombre d'uniter restent
if($fantassinD<0){$fantassinD=0;} //si le nombre de fantassin est inférieur alors il est égale a 0
$mitrailleurD = $fetch['mitrailleur'] - $mitrailleurD - $mitrailleurD1;
if($mitrailleurD<0){$mitrailleurD=0;}
$fantassin correspond au fantassin du joueur