JeuWeb - Crée ton jeu par navigateur
Script de combats en PHP Galère ^^ - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Script de combats en PHP Galère ^^ (/showthread.php?tid=1857)

Pages : 1 2 3 4


RE: Script de combats en PHP Galère ^^ - leni - 06-10-2007

je traite exactement le même sujet, alors j'ai pas fait de 2° topic Wink
et puis se script pourra vous aider :p
Code PHP :
<?php

// le gentil c'est le deffensseur, je le symbolise par le G majuscule en debut de variable
// le mechant, c'est le gas qui attaque, lui c'est le M majuscule qui le caracterise au debut de la variable
//off = offenssif
//deff = defenssif
//cp = corp a corp
//ar = archer => combat a disctance
//tot = total des troupes

//deroulement du combat : grosse mellée au millieu entre les soldat, mercenaires, cavalier, templier etc, les gentils sont couverts par les archer, pdt que les archer du mechant se cassent les dent contre seux qui sont derrière les mur.
//dès qu'il n'y as plus de gentil/mechant au millieu, si c'est les gentils qui on gagner, il courzent tous derrière les archer et les abatent comme des ****
// si c'est des mechant qui restent, et bin ils rentrernt dans l'enceinte et massacrent les archer, sans deffense.


$req1 = mysql_query("SELECT * FROM attaque WHERE moment<".$time."") or die(mysql_error()); // Requ�te SQL
while ($att = mysql_fetch_array($reponse))
{
$reqg = mysql_query("SELECT * FROM hommes WHERE pseudo='".$att['gentil']."'") or die(mysql_error()); // Requ�te SQL
$G = mysql_fetch_assoc($reqg);
$reqm = mysql_query("SELECT * FROM hommes WHERE pseudo='".$att['mechant']."'") or die(mysql_error()); // Requ�te SQL
$M = mysql_fetch_assoc($reqm);

$G_def_cp=$G['defsoldat']*$G['nombresoldat']+$G['defcavalier']*$G['nombrecavalier']+$G['defmercenaire']*$G['nombremercenaire']+$G['defpaladin']*$G['nombrepaladin']+$G['deftemplier']*$G['nombretemplier'];
$G_off_cp=$G['attarcher']*$G['nombrearcher']+$G['attarc']*$G['nombrearc']+$G['attarbalestrier']*$G['nombrearbalestrier']+$G['attsoldat']*$G['nombresoldat']+$G['attcavalier']*$G['nombrecavalier']+$G['attmercenaire']*$G['nombremercenaire']+$G['attpaladin']*$G['nombrepaladin']+$G['atttemplier']*$G['nombretemplier'];

$M_def_cp=$M['defsoldat']*$att['soldat']+$M['defcavalier']*$att['cavalier']+$M['defmerceniare']*$att['mercenaire']+$M['defpaladin']*$att['paladin']+$M['deftemplier']*$att['templier'];
$M_off_cp=$M['attsoldat']*$att['soldat']+$M['attcavalier']*$att['cavalier']+$M['attmerceniare']*$att['mercenaire']+$M['attpaladin']*$att['paladin']+$M['atttemplier']*$att['templier'];

$G_def_ar=$G['defarcher']*$G['nombrearcher']+$G['defarc']*$G['nombrearc']+$G['defarbalestrier']*$G['nombrearbalestrier'];
$G_off_ar=$G['attarcher']*$G['nombrearcher']+$G['attarc']*$G['nombrearc']+$G['attarbalestrier']*$G['nombrearbalestrier'];

$M_def_ar=$M['defarcher']*$att['archer']+$M['defarc']*$att['arc']+$M['defarbalestrier']*$att['arbalestrier']+$M['defbaliste']*$att['baliste'];
$M_off_ar=$M['attarcher']*$att['archer']+$M['attarc']*$att['arc']+$M['attarbalestrier']*$att['arbalestrier'];

$G_tot_cp=$G['nombresoldat']+$G['nombrecavalier']+$G['nombremercenaire']+$G['nombrepaladin']+$G['nombretemplier'];
$M_tot_cp=$att['soldat']+$att['cavalier']+$att['mercenaire']+$att['paladin']+$att['templier'];

$G_tot_ar=$G['nombrearcher']+$G['nombrearc']+$G['nombrearbalestrier'];
$M_tot_ar=$att['archer']+$att['arc']+$att['arbalestrier'];


$G_moy_off_cp=$G_off_cp/$G_tot_cp;
$M_moy_off_cp=$M_off_cp/$M_tot_cp;
$G_moy_deff_cp=$G_deff_cp/$G_tot_cp;
$M_moy_deff_cp=$M_deff_cp/$M_tot_cp;

$G_moy_off_ar=$G_off_ar/$G_tot_ar;
$M_moy_off_ar=$M_off_ar/$M_tot_ar;
$G_moy_deff_ar=$G_deff_ar/$G_tot_ar;
$M_moy_deff_ar=$M_deff_ar/$M_tot_ar;

while (
$time < $time2)
{
//on commence par le calcule des pertes des archers :
$G_pv_ar=100; // les archer on une belle deffense derrière les murs
$G_def_ar=$G_moy_def_ar*$G_tot_ar*$G_pv_ar;

$M_off_ar=$M_moy_off_ar*$M_tot_ar;

$G_perte_ar=$G_def_ar-$M_off_ar; // la deffense moin l'attaque
//et la, je ne sais plus quoi fair :D

// on actualise le nombre d'archer Gentils
$G_tot_ar=$G_tot_ar-$G_perte_ar;

}
}
?>



RE: Script de combats en PHP Galère ^^ - jo_link_noir - 06-10-2007

salut,
$G_perte_ar=$G_def_ar-$M_off_ar; // la deffense moin l'attaque
si je li bien, un ennemi avec 2 attaque de plus, nous tue 2 soldats OO
c'est bourrin...

pour la suite, tu fait le même avec les archers "méchant" (j'aime bien le thermes pour les désignés ^^)
et pour savoir qui meurt dans les archers, je verrais bien un truc en pourcentage. Le pourcentage d'archer dans l'armé, de baliste etc. Et un mt_rand entre 0 et ce pourcentage pour savoir les pertes
reste plus qu'à refaire les calculs d'attaque (pour éliminer les morts) et soustraire les autres variables
et hop la boucle recommence
_______

Code PHP :
<?php 
$G_tot_ar
=$G_tot_ar-$G_perte_ar;
équivaut à
Code PHP :
<?php 
$G_tot_ar
-= $G_perte_ar;



RE: Script de combats en PHP Galère ^^ - leni - 07-10-2007

non, imaginons 2 soldat qui se battent en duel, 6 d'attaque, 5 en deffense chacun. ils auront donc 50 points de vie. chaucun leurs tours is vont s'enelever6 points de vie, soit au bout du 9° tour, le soldat qui deffendais meur (vu que c'est pas lui qui attaque en premier)

le probleme se pose quand 10 cavalier (9 attaque 7 defensse) attaquent 1000 soldat... ils attaquent en premier : 7000-90=6980 6980/10= 698 // divison par le nombre de pts de vie pour calculer les pertes.
Les cavalier tuent 680 soldat en une vanne ... ils trop balezent dis moi ! un peu trop a mon gout, mais je sais pas coment defair se beg ...

en tout cas, merci pour ton tuyau du -= , sa va beaucoup me servir Smile


RE: Script de combats en PHP Galère ^^ - jo_link_noir - 07-10-2007

j'ai pas tout comprit Confused
Citation :2 soldat qui se battent en duel, 6 d'attaque, 5 en deffense chacun. ils auront donc 50 points de vie.
la defense est multiplier par 10 pour savoir les vies ?

Citation :ils attaquent en premier : 7000-90=6980 6980/10= 698 // divison par le nombre de pts de vie pour calculer les pertes.
90 attaque je vois pourquoi mais 7000 je comprend pas... ?

tu pourrais m'xpliquer un peu ^^


RE: Script de combats en PHP Galère ^^ - leni - 07-10-2007




RE: Script de combats en PHP Galère ^^ - Cartoristal - 07-10-2007

Moi je suis confronté à ce même problème.
Le script de combat est vraiment un bon hic à la programmation ...
Jusque là je galérais mais là je suis bloqué ^^
C'est hard^^

D'ailleurs si des gens on des script qui fonctionnent sans les bug de pertes bizzares ...


RE: Script de combats en PHP Galère ^^ - leni - 07-10-2007

non, c'est pas uen fonction de script hard, c'est just qu'on galère niveau maths ... on nous aprend a calculer la racine de cosX+1, mais on sais meme pas calculer le nombre de point de vie qu'un gas perd ...


RE: Script de combats en PHP Galère ^^ - jo_link_noir - 08-10-2007

dans un sens t'as pas tord, mais ce qu'on nous apprend, il faut pas l'utiliser que dans le contexte où on l'apprend, on peu faire plein de truc avec, c'est juste des outil en fait, après je le reconnais c'est difficile... mais on n'a pas le choix XD

pour revenir à t'on script je croix que j'ai comprit ou alors j'suis un vrai idiot ><
je croit aussi que tu t'es emmêler les pinceaux avec les variables ; en reprenant ton exemple :
Citation :le problème se pose quand 10 cavalier (9 attaque 7 defense) attaquent 1000 soldat... ils attaquent en premier :
(nb_soldat * def_soldat * 10) - (nb_cavalier * attaque_cavalier)
=(1000*5*10) - (10*9)
=50000-90
=49910
ce calcule sert donc a déterminer les vies restantes, c'est bien ça ?
les soldats restant : 49910/50 = 998.2
là je trouve que c'est bien ^^

et les cavalier quand à eux :
(nb_cavaler * def_cavalier * 10) - (nb_soldat * attaque_soldat)
=(10 * 7 *10) - (1000 * 5)
=700 - 5000
=-4300
négatif, les cavaliers sont donc mort

ça le fait non ?


un truc qui peux p-t t'aider, ça sert à trouver le max de mort et le minimum qu'il peut y avoir. (je dit ça si tu veux prendre en compte le fait qu'une unité peut en attaquer plusieurs et ; par ex enlever 10 vie à 30 unités, dans ce qu'a aucune n'est mortes)
après t'en fait ce que tu veux ^^
$mort_max = FLOOR( ($attaque_mechant * $unite_mechant) / ($defense_gentil * $unite_gentil) );
$mort_min = FLOOR( $attaque_mechant * $unite_mechant - ($defense_gentil -1) * $unite_gentil );

attention quand même à $mort_min, il passe en négatif quand le minimum de mort est à 0. Alors faut pas oublier de faire une condition


RE: Script de combats en PHP Galère ^^ - Cartoristal - 08-10-2007

Rooo terrible tout sa ...
Eh beh écoutez je vais y réfléchir et je vous poste le script d'ici 1 ou 2 jours ( ou alors encore des questions ... )

Merci bien en tout cas!


RE: Script de combats en PHP Galère ^^ - leni - 08-10-2007

oui tien nous au courant Smile
je fais mon script moi aussi de mon coter, on rassemblera tout sa Wink