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 - 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


// NOUVEL ESSAY DE SCRIPT DE COMBAT BASTON2.PHP //
if ($Cavaliers_gentils <= 0) {
$Calcul_Archers_attaque_méchants= ($Archers_méchants * 12) - ($Archers_gentils * 10 ); // ON CALCULE DONC ICI LE NOMBRE DE PERTES DU COT2 DES ARCHERS ATTAQUANTS
$Calcul_Archers_final1= ($Calcul_Archers_attaque_méchants / 10); // ON DIVIVE PAR LE DEFENSE DES ARCHERS
if ($Calcul_Archers_final1 > $Archers_méchants) { // AU CAS OU LA PERTE SERAIT SUPRIEURE AU NOMBRE D'ARCHERS ON PLACE LES PERTES = ARCHERS ATTAQUANT ( totalité ).
$Calcul_Archers_final1 = $Archers_méchants;
}
echo
'L\attaquant attaque et fais';
echo
$Calcul_Archers_final1 ;
echo
'Victimes chez les Archers défenseurs';
$Archers_gentils= ($Arc_gentils - $Calcul_Archers_finall);

echo
'IL reste donc';
echo
$Cavaliers_gentils;
echo
'Cavaliers en défense</br></br></br>';
}
else{

$Calcul_Archers_attaque= ($Archers_méchants * 12) - ($Cavaliers_gentils * 8 ); // ON CALCULE LE NOMBRE DE CAVALIERS QUE LES ARCHERS ATTAQUANTS VONS TUER
$Calcul_Archers_final_attaque= ($Calcul_Archers_attaque / 8); //
if ($Calcul_Archers_final_attaque > $Cavaliers_gentils) { //
$Calcul_Archers_final_attaque = $Cavaliers_gentils;
}

echo
'L\'attaquant tue';
echo
$Calcul_Archers_final_attaque;
echo
'Cavaliers du défenseur</br></br></br>';

$Cavaliers_gentils= ($Cavaliers_gentils - $Calcul_Archers_final_attaque);

echo
'IL reste donc';
echo
$Cavaliers_gentils;
echo
'Cavaliers en défense</br></br></br>';
}

if (
$Cavaliers_méchants <= 0) {
$Calcul_Archers_attaque_gentils= ($Archers_gentils * 12) - ($Archers_méchants * 10 ); // ON CALCULE DONC ICI LE NOMBRE DE PERTES DU COT2 DES ARCHERS ATTAQUANTS
$Calcul_Archers_final88= ($Calcul_Archers_attaque_gentils / 10); // ON DIVIVE PAR LE DEFENSE DES ARCHERS
if ($Calcul_Archers_final88 > $Archers_méchants) { // AU CAS OU LA PERTE SERAIT SUPRIEURE AU NOMBRE D'ARCHERS ON PLACE LES PERTES = ARCHERS ATTAQUANT ( totalité ).
$Calcul_Archers_final88 = $Archers_méchants;
}
echo
'L\attaquant attaque et fais';
echo
$Calcul_Archers_final88 ;
echo
'Victimes chez les Archers défenseurs';
}
else{






$Calcul_Archers_défense= ($Archers_gentils * 12) - ($Cavaliers_méchants * 8 ); // ON CALCULE LE NOMBRE DE CAVALIERS QUE LES ARCHERS ATTAQUANTS VONS TUER
$Calcul_Archers_final_défense= ($Calcul_Archers_attaque / 8); //
if ($Calcul_Archers_final_défense > $Cavaliers_gentils) { //
$Calcul_Archers_final_défense = $Cavaliers_gentils;
}

echo
'Les archers du défensuer ripostent et tuent';
echo
$Calcul_Archers_final_défense;
echo
' Cavaliers De l\attaquant</br></br></br>' ;


}

}

}


?>

Voila le script que j'arrive à faire m'enfin bon sa marche moyen...


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

ouai, pour ça que ce calcule trouve vite ses limites (en gros il distribu sur toute les unitées les degats reçus et donne l'attaque restante)
par exemple, 3 unitées de 10pv
ce qu'il faudrais faire c'est tout distribué sur la même unité --> 20-10 --> une unité morte, reste 10 attaque --> 10-10 --> une unité morte, reste 0 attaque etc. toto 2 mort alors qu'avec le calcul precedent aucun

avec les 2 calcules suivant, en gros tu as, le max de mort qu'il peut y avoir et le mimum.
le min de mort dans ton exemple serais -125
et max de mort serais 93.75...
une grande différence quand même

$mort_max = FLOOR( ($attaque_mechant * $unite_mechant) / $defense_gentil); ça ne prend pas en compte le nombre de gentil, il pourrais y en avoir 3 ou 3000 leur résultat sera le même
$mort_min = FLOOR( $attaque_mechant * $unite_mechant - ($defense_gentil -1) * $unite_gentil );

bon après faut joué avec les 2 calcules, un mt_rand entre les 2 par exemple ou le milieu des 2 résultats ( (93.75 + (-125))/2 = -15.625). moi je fait un mt_rand(max-min, max), comme tu vois, fait comme tu veux

PS : je répondais à l'autre message ^^


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

Bon ok, j'ai pas lu les pages de post donc je vais peut-etre repondre a cote.

Mais, pour faire un script de combat, le bon vieux organigrame est ideal ! Apres le code vient tout seul.

Galaan


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

Oo la la la laaa...

Sa commencer à me prendre le choux là j'y arrive pas du tout j'en suis au dernier script posté mais je vois pas trop comment améliorer le tout.
Je pense pas que je me sortirais des scripts.
J'ai pas le niveau.


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

quel morale ... tu pense qu'on aurai gagner contre les black si on parté de se principe !?! :p
dans ton code, je vois plein de trucs inutile...
laisse mon t'expliquer comment je vois les choses :
-une table sql `attaque`avec dedant le nombre d'hommes envoyés par le "mechant", ainsi que le nom de se mechant, et celui du gentil et surtout, un champ "type" et un autre "moment". (tu vera pourquoi)
- une table `soldats`qui contient le nom de chauques membres et qui conteint le nombre de villages qu'il a chez lui
- un script "attaquer.php", qui est un formulaire dans lequel le mechant entre le nombre d'hommes qu'il veu envoyer
- un dernier script qui est "combat.php", inutuile de te repeter se qu'il devra contenir.

la page "attaquer" aura comme effet d'enlever les hommes presents sur `soldats`et de les mettre sur `attaquer`, de calculer le temp de transport entre les 2 joueurs et d'incrementer se tem en seconde au timestamp actuel. cette valeur entrera ds le champ "moment". ensuite, le champ type sera tout simplement: "aller".

au debut de chaque pages, tu fait sa :
Code PHP :
<?php 
$req
= mysql_query(select * from attaque where moment>$timestamp where pseudo=$_session['pseudo']);
$donnees = mysql_fetch_array($req);

if (
$donnees['type'] == aller)
{
update attaquer set type=combat where pseudo=$_session['pseudo']
include(
includes/combat.php)
//a la fin du fichier combat, il y aura une autre update pour mettre type=retour si le mechant a gagner
}
if (
$donnees['type'] == retour)
{
update soldat set nombresoldat=......
//les rescapés sont rentrés
}
if (
donnees[type] == combat)
{include(
includes/comabat.php) }
c'est plein de fautes, mais au moin, tu as toute la partie theorie ^^
maintenant, a toi de fair ta page combat.php, tu sa deja eu mon example, tout les gros cacul on étés mits a plats, il ne te reste plus qu'à coder.

voili voulou, bon courage Wink

ps : j'ai pas eu le temp de fini le mien, je le posterai bientot, mais c'est pas une raison pour pas fair le tien Wink
d'ailleur, le mien est different : l'attaque et la deffensse des joueur n'est pas predefinie, donc il te sera encor plus dure de le retaper Wink


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

pour le combat, vu que sa a l'air d'etre ton principale probleme, regarde comment je ferai sa (simple simple, après, il va faloir compliquer un peu)

Code PHP :
<?php 
$mechant
= mysql_query(select*from attaque where pseudo=$_session pseudo);
$mechant = mysql_fetch_array($mechant);

$gentil= mysql_query(select*from soldat where pseudo=$mechant['pseudo_gentil']);
$genntil=mysql_fetch_array

$mechant_tot
= $mechant['soldat']+$mechant['... ;
$gentil_tot=$gentil['
soldat']+$gentil['.... ;

$gentil_att = (($gentil['soddat']*5)/gentil['soldat'] ... //disons qu'un soldat a 5 d'attaque
$gentil_def= (($gentil['soddat']*8)/gentil['soldat'] ... ; //disons qu'un soldat a 8 dde deff

while ($mechant_tot > 0 OR $gentil_tot > 0)
{
$g_off = $gentil_tot*gentil_att;
$m_def=$mechant_tot*mechant_def*10;
$m_survie = floor($m_def-$g_off)
$mechant_tot=$m_pertes/10;

$m_off = $mechant_tot*mechant_att;
$g_def=$gentil_tot*gentil_def*10;
$g_survie = floor($g_def-$m_off)
$gentil_tot=$g_pertes/10;
}

if (
$mechant_tot > 0)
{
update attaque set survivant= ..., moment=temp nessessaire au retour, type=retour
}
else
{
insert into raport values('', '$_session ['pseudo'], '$gentil['pseudo']', 'vous avez tout perdus pendant la bataille')); // envoi d'un rapport ('id', 'destinataire', 'sujet', 'message')
}

et voila, t'as un magnifique prototype a retravailler Wink


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

Je comprends mieux comment je peux organiser sa.

Une petite question : floor($m_def-$g_off)
Qu'est ce que le floor? connais pas sa moi.

Et pis bon beh je me remet au codage alors.

Vraiment, merci beaucoup c'est gentil de perdre du temps à m'expliquer sa.

( et vivement la victoire contre les Anglais )


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

premièrement, je ne perd pas de temp à t'expliquer sa, vu que tu comprend ^^
deuxièmement, je suis en train de fair se même code en se moment, se serai egoiste de ne pas travailler avec seux qui font pareille, surtout vu se que les autres ont fait pour moi, (et feront aussi Big Grin !)

pour floor(), cette fonction arrondis au plus faible. un quart de soldat ne se bat pas, et c'est chiant a entrer dans la base de donnée Big Grin. tu peu aussi mettre ceil, mais j'ia trouver sa injust que 9.9 soldat n'attaque pas aussi bien que 10... par comtpe, 9.000001 soldat, sa attaquera quand même à 10... il y a du pour comme du contre, moi j'ai preferer le pour, maintenant a toi de decider Wink

pour le rugby, je suis sepctique... j'ai pas les anglais, et wilkinson, je crois que je vais le detester ... il n'y as que lui dans leur equipe qui peu sauver l'honneur, il aura une pression enorme, et il peu pas decevoir l'angleterre ... tu va voir quand il aura tenter de plaquer une fois ou 2 notre chabal, il marchera en zigzag et il tirera carrer xD


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

il existe round, ça arrondi comme on ferrait normalement

round(10.5) = 11
round(10.49) = 10


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

oui mais le probleme avec sa, c'est que si le joueur fait une fake, il va, normalement pperde le combat. si il y a la possibilitée que sa valeur en point de vie soit arrondie au plus fort, il risque de tuer des (gentils) deffenssuers, alors qu'il le terrain aurai ét vide, il serai mort sans blesser personne ...