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 ^^ - Cartoristal - 08-10-2007

Code PHP :
<?php
include("mysql_connect.php"); // Faur bien se connecter à la bdd
session_start(); // On lance la session

$id=$_SESSION['Pseudo']; // On rentre une variable pseudo = à la variable de session pseudo


$awser = mysql_query("SELECT * FROM Attaques_en_cours WHERE Joueur='$id'");
while (
$Armées = mysql_fetch_array($awser) )
{
$Joueur_attaqué=$Armées['Joueur_attaqué'];
$Parcelle_attaquée=$Armées['Parcelle_attaquée'];

$def = mysql_query("SELECT Archers_on, Cavaliers_on FROM Parcelles WHERE Parcelle='$Parcelle_attaquée'");
while (
$Defense = mysql_fetch_array($def) ) //
{

$Troupes_attaquantes = $Armées['Archers_attaquants']+$Armées['Cavaliers_attaquants']; // ON PLACE LES VARIABLES
$Troupes_défendantes = $Defense['Archers_on'] + $Defense['Cavaliers_on'];

$Archers_méchants= $Armées['Archers_attaquants'];
$Archers_gentils= $Defense['Archers_on'];

$Cavaliers_méchants= $Armées['Cavaliers_attaquants'];
$Cavaliers_gentils= $Defense['Cavaliers_on'];


if (
$Troupes_attaquantes > 0 AND $Troupes_défendantes > 0 ) { // SI LE COMBAT N'EST PAS DEJA FINI ^^





$Calcul_Archers_attaque= ($Archers_méchants * 12) - ($Archers_gentils * 10 ); // POUR LES ARCHERS ATTAQUANTS
$Calcul_Archers_final= ($Calcul_Archers_attaque / 10);
echo
'L\'attaquant perds';
$Pertes_Archers_Attaquant=($Archers_méchants - $Calcul_Archers_final);
echo
$Pertes_Archers_Attaquant;
echo
'Archers</br>';
echo
'Il reste donc';
echo
$Calcul_Archers_final;
echo
'Archers attaquants </br>';


$Calcul_Cavaliers_attaque= ($Cavaliers_méchants *15 ) - ($Cavaliers_gentils * 8 ); // POUR LES CAVALIERS ATTAQUANTS
$Calcul_Cavaliers_final= ($Calcul_Cavaliers_attaque / 8 );
if (
$Calcul_Cavaliers_final > $Cavaliers_méchants) {
$Calcul_Cavaliers_final = $Cavaliers_méchants;
}
else
{
$Calcul_Cavaliers_final = $Calcul_Cavaliers_final;

}
echo
'L\'attaquant perds';
$Pertes_Cavaliers_Attaquant=($Cavaliers_méchants - $Calcul_Cavaliers_final);

if (
$Pertes_Cavaliers_Attaquant < 0 ) {
$Pertes_Cavaliers_Attaquant=0;
}
else{
$Pertes_Cavaliers_Attaquant=$Pertes_Cavaliers_Attaquant;
}
echo
$Pertes_Cavaliers_Attaquant;
echo
'Cavaliers</br>';
echo
'Il reste donc';
echo
$Calcul_Cavaliers_final;
echo
'Cavaliers attaquants </br>';


$Calcul_Archers_défense= ($Archers_gentils * 10) - ($Archers_méchants * 12 ); // Pour Archers Defendants
$Calcul_Archers_finalité=($Calcul_Archers_défense / 10 );
echo
'Le défenseur perds';
$Pertes_Archers_défense=($Archers_gentils - $Calcul_Archers_finalité);
echo
'Archers de défense</br>';

$Calcul_Cavaliers_défense= ($Cavaliers_gentils * 8) - ($Cavaliers_méchants * 15 ); // Pour Cavaliers Defendants
$Calcul_Cavaliers_finalité= ($Calcul_Cavaliers_défense / 8 );
echo
'Le défenseur perds';
$Pertes_Cavaliers_défense=($Cavaliers_gentils - $Calcul_Cavaliers_finalité);
echo
'Cavaliers de défense</br>';


}



else
{
echo
'Bataille déjà terminée';
}
}
}



?>

Bon voila ce que j'ai codé ... Sa vous parait juste ou pas.
Si 1000 archers et 1000 cavaliers attaquent 500 archers et 500 cavaliers je trouve que
L'attaquant perds300Archers
Il reste donc700Archers attaquants
L'attaquant perds0Cavaliers
Il reste donc1000Cavaliers attaquants
Le défenseur perdsArchers de défense
Le défenseur perdsCavaliers de défense

M'enfin bon... Pourquoi donc le défenseur perds rien ? pKwa sa marche pas ou est l'error?

En partant du principe ( comme vu dans mes variables, que Archers ( 12/10 )
Et Cavaliers ( 15 / 8 )


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

bah déjà 2 remarques, indente ton code, c'est plus facile à lire pour tous le monde et des commentaires supplémentaires ne font pas de mal, pars que là je pige pas tout de suite ec que contienne chaque variable Confused
j'ai vu quelque part qu'un script avec des commentaires mal expliquer devais être jeter XD

ah aussi, pour tester facilement (et changer rapidement le contenu des variables) je te conseille de tout faire en local avec les valeurs utiliser prédéfini au début du script. Pour toi y en aurais 4, le nombres de cavaliers et archers ennemi et allier.
$Armées['Archers_attaquants'] = 1000;
$Armées['Cavaliers_attaquants'] = 1000;
$Defense['Archers_on'] = 500;
$Defense['Cavaliers_on'] = 500;
et comme ça ceux qui veulent corriger ton script peuvent facilement voir les variable importante. Au pire pour pas oublier les requêtes sql qu'il va y avoir tu les met en commentaire.

alors concernant ton script : (je le dit un peu dans le désordre ^^)
-tu oublis de vérifier si les archers restant sont négatif (par contre c'est fait pour les cavalier)

Citation :if ($Calcul_Cavaliers_final > $Cavaliers_méchants) {
$Calcul_Cavaliers_final = $Cavaliers_méchants;
}
else
{
$Calcul_Cavaliers_final = $Calcul_Cavaliers_final;
}
-le else n'est pas utile ici, $Calcul_Cavaliers_final = toujours lui même, pas besoin de le redire

-ça n'affiche rien parsque t'as oublier le echo $Pertes_Cavaliers_défense; et echo $Pertes_Archers_défense; XD


je croit aussi que les boucle ne vont pas bien, mais chaque chose en son temps, déjà fini le round 1 du combat ^^

voilà pour les erreurs importante que j'ai pu comprendre. Par contre (et ça doit être le pire >< ) dans le cas ou 100 archers et cavaliers attaque aussi 100 archers et cavaliers, les perte doivent être les même dans les 2 camps ?
Si c'est le cas, tu t'es trompé en multipliant la def et l'attaque des unités, tu as tout inverser

PS : Archers ( 12/10 ), l'attaque c'est 12 ou 10 ? ^^


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

Bon pour la boucle normal qu'elle soit pas finie c'est juste pour le codage du round 1.

Ensuite les variables sont Archers = 1000 Cavaliers= 1000 En attaque et en défense 500 Cavaliers et 500 Archers...

Ok compris pour le fait que s'a n'affiche rien erreur de copier collé merci bien.

Archers attaque 12
Archers défense 10

Cavaliers attaque 15
Cavaliers défense 8

( je pensais aussi à faire Cavaliers défense contre archers et attaque contre archer et Archers attaque contre cavalier etc ...
Grossomodo une Attaque / Défense pour chaque unité, sur chaque unité et donc calculer tout cela.


RE: Script de combats en PHP Galère ^^ - Byleth - 09-10-2007

Sur ta dernière idée : tu peux faire ça, mais ce n'est pas très réaliste , d'un point de vue stratégique, on a jamais du les archers du défenseur viser les archers de l'attaquant tant qu'il y a des troupes de corps à corps ^^

Pour le code bon courage, j'ai pas le temps de regarder...


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

Code PHP :
<?php
include("mysql_connect.php"); // Faur bien se connecter à la bdd
session_start(); // On lance la session

$id=$_SESSION['Pseudo']; // On rentre une variable pseudo = à la variable de session pseudo

$awser = mysql_query("SELECT * FROM Attaques_en_cours WHERE Joueur='$id'"); // ON VA CHERCHER DANS LA BASE LES ARCHERS, CAVALIERS EN ATTAQUE AINSI QUE LA PARCELLE ATTAQUEE
while ($Armées = mysql_fetch_array($awser) )
{

$Joueur_attaqué=$Armées['Joueur_attaqué']; // NOM DU JOUEUR ATTAQUEE
$Parcelle_attaquée=$Armées['Parcelle_attaquée']; // PARCELLE DU JOUEUR ATTAQUEE

$def = mysql_query("SELECT Archers_on, Cavaliers_on FROM Parcelles WHERE Parcelle='$Parcelle_attaquée'"); //ARCHERS ET CAVALIERS PRESENTS SUR LA PACELLE ATTAQUEE
while ($Defense = mysql_fetch_array($def) )
{

$Troupes_attaquantes = $Armées['Archers_attaquants']+$Armées['Cavaliers_attaquants']; // ON PLACE LES VARIABLES TROUPES ATTAQUANTES = ARCHERS ATTAQUANTS + CAVALIERS ATTAQUANTS
$Troupes_défendantes = $Defense['Archers_on'] + $Defense['Cavaliers_on']; // IDEM POUR LES TROUPES EN DEFENSE...

$Archers_méchants= $Armées['Archers_attaquants']; // ARCHERS MECHANT = ARCHERS EN ATTAQUE
$Archers_gentils= $Defense['Archers_on']; // ARCHERS GENTILS = ARCHERS EN DEFENSE

$Cavaliers_méchants= $Armées['Cavaliers_attaquants'];// IDEM POUR LES CAVALIERS
$Cavaliers_gentils= $Defense['Cavaliers_on']; // IDEM POUR LES CAVALIERS


if ($Troupes_attaquantes > 0 AND $Troupes_défendantes > 0 ) { // SI LE COMBAT N'EST PAS DEJA FINI ALORS ON CALCULE LE COMBAT




// ON SE LANCE DANS LES CALCULS DE COMBAT //





$Calcul_Archers_attaque= ($Archers_méchants * 12) - ($Archers_gentils * 10 ); // ON CALCULE DONC ICI LE NOMBRE DE PERTES DU COT2 DES ARCHERS ATTAQUANTS
$Calcul_Archers_final= ($Calcul_Archers_attaque / 10); // ON DIVIVE PAR LE DEFENSE DES ARCHERS
if ($Calcul_Archers_final > $Archers_méchants) { // AU CAS OU LA PERTE SERAIT SUPRIEURE AU NOMBRE D'ARCHERS ON PLACE LES PERTES = ARCHERS ATTAQUANT ( totalité ).
$Calcul_Archers_final = $Archers_méchants;
}

echo
'L\'attaquant perds';

$Pertes_Archers_Attaquant=($Archers_méchants - $Calcul_Archers_final); // ON CALCULE COMBIEN DE PERTES VA AVOIR L'ATTAQUANT DANS SES TROUPES EN ATTAQUES

if ( $Pertes_Archers_Attaquant < 0 ) { // SI LES PERTES SONT TROP FORTES PAR RAPPORT AU NOMBRE D'ATTAQUANT
$Pertes_Archers_Attaquant=0;
}

$Pertes_Archers_Attaquant=($Archers_méchants - $Calcul_Archers_final);
echo
$Pertes_Archers_Attaquant;
echo
'Archers</br>';
echo
'Il reste donc';
if (
$Calcul_Archers_final < 0 ) {
$Calcul_Archers_final=0;
}
echo
$Calcul_Archers_final;
echo
'Archers attaquants </br>';


$Calcul_Cavaliers_attaque= ($Cavaliers_méchants *15 ) - ($Cavaliers_gentils * 8 ); // POUR LES CAVALIERS ATTAQUANTS
$Calcul_Cavaliers_final= ($Calcul_Cavaliers_attaque / 8 );
if (
$Calcul_Cavaliers_final > $Cavaliers_méchants) {
$Calcul_Cavaliers_final = $Cavaliers_méchants;
}
echo
'L\'attaquant perds';

$Pertes_Cavaliers_Attaquant=($Cavaliers_méchants - $Calcul_Cavaliers_final);

if (
$Pertes_Cavaliers_Attaquant < 0 ) {
$Pertes_Cavaliers_Attaquant=0;
}
$Pertes_Cavaliers_Attaquant=($Cavaliers_méchants - $Calcul_Cavaliers_final);
echo
$Pertes_Cavaliers_Attaquant;
echo
'Cavaliers</br>';
echo
'Il reste donc';
if (
$Calcul_Cavaliers_final < 0 ) {
$Calcul_Cavaliers_final=0;
}
echo
$Calcul_Cavaliers_final;
echo
'Cavaliers attaquants </br>';


$Calcul_Archers_défense= ($Archers_gentils * 10) - ($Archers_méchants * 12 ); // Pour Archers Defendants
$Calcul_Archers_finalité=($Calcul_Archers_défense / 10 );
if (
$Calcul_Archers_finalité > $Archers_gentils) {
$Calcul_Archers_finalité = $Archers_gentils;



}
echo
'L\'attaquant perds';
$Pertes_Archers_défense=($Archers_gentils - $Calcul_Archers_finalité);

if (
$Pertes_Archers_défense > $Archers_gentils ) {
$Pertes_Archers_défense = $Archers_gentils;
}

echo
$Pertes_Archers_défense;
echo
'Archers de défense</br>';

echo
'Il reste donc';
if (
$Calcul_Archers_finalité < 0 ) {
$Calcul_Archers_finalité=0;
}
echo
$Calcul_Archers_finalité;
echo
'Archers défendant </br>';

$Calcul_Cavaliers_défense= ($Cavaliers_gentils * 8) - ($Cavaliers_méchants * 15 ); // Pour Cavaliers Defendants
$Calcul_Cavaliers_finalité= ($Calcul_Cavaliers_défense / 8 );
if (
$Calcul_Cavaliers_finalité > $Cavaliers_gentils) {
$Calcul_Cavaliers_finalité = $Cavaliers_gentils;
}

echo
'L\'attaquant perds';
$Pertes_Cavaliers_défense=($Cavaliers_gentils - $Calcul_Cavaliers_finalité);

if (
$Pertes_Cavaliers_défense > $Cavaliers_gentils ) {
$Pertes_Cavaliers_défense=$Cavaliers_gentils;



echo
$Pertes_Cavaliers_défense;
echo
'Cavaliers de défense</br>';
echo
'Il reste donc';
if (
$Calcul_Cavaliers_finalité < 0 ) {
$Calcul_Cavaliers_finalité=0;
}
echo
$Calcul_Cavaliers_finalité;
echo
'Cavaliers denfendant </br>';



}else
{
echo
'Bataille déjà terminée';
}
}
}
}




?>

Voila qui fonctionne...
Maintenant bon je vais me pencher sur le fait qu'en effet c'est pas très réalise?
Arches Méchants Vs Cavaliers Gentils
Puis
Archers Gentils Vs Cavaliers Mechants
Et après le contraire ?
Cav M vs Archers G
Puis
Cav G vs Archers M ?


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

non c'est pas trop possible. s'il reste des cavaliers les archer sont toujours proteger. Il faut d'abord mettre ko toute les unitées de corps à corps avant de pouvoir touche les archers


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

Donc:


1)Les Archers de l'attaquant attaquent les cavaliers du défenseur
( si pas cavaliers il attaquent les archers? )
1)Les Archers du défenseur ripostent sur les Cavaliers de l'attaquant
( si pas cavaliers attaquent les archers )


2)Puis les cavaliers de l'attaquant attaquent les cavaliers restants du défenseur
2)Les cavaliers restants au défenseur attaquent les cavaliers restant a l'attaquant.
( si plus cavaliers alors les archers )

C'sa ou pas?!


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

ouai là ça le fait bien, reste plus qu'à coder tout ça XD

bonne chance


RE: Script de combats en PHP Galère ^^ - exopi - 09-10-2007

bon j'ai pas tout lu le post, mais apparement tu t'amuse à sépareer chaque créature dans une variable en plus. mais imagine qu'un jour tu veuille rajouter encore une aute créature, puis 10 autres, le code deviendra infame. C'es tporu ca qu'il faut le plus possible etre global et abstait dans un code : je choisit 1 créature donc ca compétence est x, on ne la connais pas a l'avance lors du codage, mais on sais que cette vraiable stoquera la competence de la créature choisit. On peut aller plus loins, on ne sais aps a l'avance quelle créature on choisit, mais on sais que la variable $creature stoquera l'id de ma créature... etc ^^

Bon c'était juste un ptit apparté, qui est surement hs


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

Nan sa l'est pas il faut que je fasse une table avec Archers, Cavaliers etc avec L'attaque et la défense et que j'aille chercher sa pour le calculer ...
M'enfin bon pour l'instant je voudrais y arriver avec sa.
Je referais mon code en temps voulu.

Lorsque 500 Archers de 12 D'attaque attaquent 1000 Cavaliers de 8 de défense.

On fais (500 * 12) - (8 * 1000)
et donc on obtient -2000 ...
On divise cela par 8
et donc -250.

On peut en déduire que les Archers tuent aucun cavaliers?