JeuWeb - Crée ton jeu par navigateur
Sauvegarde de Combat - 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 : Sauvegarde de Combat (/showthread.php?tid=68)

Pages : 1 2


Sauvegarde de Combat - Dementia - 01-09-2006

J'ai un petit probleme pour faire un systeme de sauvegarde des combats .

J'utilise une boucle pour mon Systeme de combat mais je ne vois pas comment faire pour les sauvegarder dans une base de donnée ou dans des fichiers texte je ne sais pas ce qui peu etre le mieux .

Quelqu'un sait comment faire et peu etre me mettre sur une petite piste ??


RE: Sauvegarde de Combat - alfanor - 01-09-2006

Que veut tu dire par sauvegarde de combat ? S'agit t'il d'un jeu de stratégie comme Ogame ou Travian ? (euh enfin de bourrinage pour être plus précis)

Si oui il te suffit de créer une table "Attaque ou "Combat" avec comme champs :

Citation :id
timestamp
attaquant
defenseur

troupe1
troupe2
troupe3 ... (enfin le nombre de troupes disponible dans ton jeu et * 2 pour 2 joueur)

perte1
perte2
perte3 ... (enfin le nombre de troupes disponibles dans ton jeu * 2 pour 2 joueurs)

/* S'il y a la possibilité d'avoir plusieurs villages/planètes/château .. */
Village attaquant
Village défenseur

Euh voilà je dit sa un peut à la vasvite, mais si tu as par exemple un système d'assistance il faudras faire un système plus complexe Tongue


EDIT: S'il s'agit d'un jeux de rôle en principe il y a une bestiole ou un méchant gugus VS le gentil héros qui font chacun X attaques jusqu'a ce que la bestiole s'enfuit ou l'un des dux meurts, pour enregistrer sa tu as cas à chaque attaque créer un tableau (par exemple nommé attaque1[]) où tu stocke le nom de l'attaquant, l'attaque, les dégâts occassionés suivit par exemple d'un trait d'union, ensuite tu enregistre tous sa dans une table ayant les champs suivant :

Citation :id
id_heros
nom_heros
combat (==> ici tu stocke les variables les unes à la suite des autres)

Et après à l'affichage tu découpe le champ combat de type text à l'aide d'une fontion (dont je ne me rappelle plus le nom) qui sépare le text après chaque trait d'union et ensuite tu n'as plus qu'a mettre en forme le text.

ps: c'est fait à l'arrache il doit y avoir plus simple ^^


RE: Sauvegarde de Combat - Dementia - 01-09-2006

Non non c'est un jeu d'elevage je veut juste faire un truc pour que les joueurs peuvent voir le combat en detail quand il se font attaquer .

Il y a pas un nombre de tour max c'est jusqu'a ce que la bestiole soit morte donc 0 pv


RE: Sauvegarde de Combat - alfanor - 01-09-2006

On peut être attaqué dans un jeu d'élevage ? Enfin bon regarde ma propostion pour les jeux de rôles voir si sa te vas ^^


RE: Sauvegarde de Combat - Dementia - 01-09-2006

Tu peu faire des combats entre bestiole non ?
Sinon si il y a pas des combats a quoi ça sert ?
J'essai de faire un melange de jeu de role et d'elevage ^^ on verra ce que sa donne .


RE: Sauvegarde de Combat - Ssin - 01-09-2006

Alors, tu creer une table resultat_combat avec comme champs :

¤ ID_attaquant ( ou ce que tu utilise pour te permettre d'identifier une personne dans ton )

¤ ID_defenseur

¤ Tour

¤ Dommage_attaquant

¤Dommage_defenseur

Et à la fin de chaque tour tu fait un update :

Code PHP :
<?php 
$array
=mysql_fetch_array(mysql_query("SELECT `dommage_attaquant`,`dommage_defenseur`,`tour`,`id_attaquant`,`id_defenseur` WHERE `ID_attaquant`='$id' OR `ID_attaquant`='$id'"));

$dmgattaquant = $array['dommage_attaquant'];
$dmgdefenseur = $array['dommage_defenseur'];
$tour = $array['tour']
$idattaquant = $array['id_attaquant'];
$iddefenseur = $array['id_defenseur'];

//Apres, tu prend les dommages de la BDD et tu rajoute les dommage du tout

$nouveaudmgattaquant = $dmgattaquant + $dmgdutour_attaquant;
$nouveaudmgdefenseur = $dmgadefenseur + $dmgdutour_defenseur;
$tour = $tour + 1;

Et tu fait un creer une nouvelle entrée

mysql_query
("INSERT INTO resultat_combat ...

C'est une idée comme une autre Wink

A la fin du combat, suffit de faire une boucle qui ecrits les dommages du tout Wink

En éspérant que cela puisse t'aider Big Grin




RE: Sauvegarde de Combat - Dementia - 01-09-2006

J'avais pensé a faire un insert to au debut de la boucle et ensuite a chaque fait de boucle sa verifie si l'insert a fonctionner et si oui il update jusqu'a la fin du combat .

Le champ deroulement sera de Type Text .


Quelqu'un pense que sa peu marcher comme ça ?


RE: Sauvegarde de Combat - Ssin - 01-09-2006

En effet, ton idées est peut etre meilleur Wink

Si tu a un champ deroulement, tu récupère la variable $deroulement et tu fait :

Code PHP :
<?php 
$deroulement
: "$deroulement + $msgdutour";

T'a méthode est certainement meilleur pour ton type de jeu, mais pour les jeux de combats ou tu as plusieurs unités, elle ne marche pas.

Donc oui, fait cela ca peut marcher et c'est plus facile. De plus, ca optimise l'espace de ta BDD.


RE: Sauvegarde de Combat - naholyr - 01-09-2006

Moi j'aurais simplement fait une table de type log de combat classique : (date, source, cible, évènement), un coup porté de A vers B = une ligne (NOW(), A, B, "coup porté") dans la table, tout simplement.

De plus contrairement à la méthode avec un unique champ text, c'est normalisé, et donc évolutif. Exemple, si un jour tu veux ajouter la durée du combat, le nombre de tours dans la combat, le nombre de coups d'un certain type porté par un joueur au cours de tous ses combats, etc... Tu pourras le faire très simplement avec une table comme je l'ai décrite, ce sera très périlleux avec une table comme la tienne Wink


RE: Sauvegarde de Combat - Ssin - 01-09-2006

Moi de toute facon je ferais un INSERT pour chaque tout, donc j'ai pas de probèmes si je veut changer Big Grin