JeuWeb - Crée ton jeu par navigateur
Exécuter un script à un moment donné - 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 : Exécuter un script à un moment donné (/showthread.php?tid=102)

Pages : 1 2


Exécuter un script à un moment donné - Faust - 25-08-2006

Bien le bonjour,
Bon voila, je suis en train d'essayer de créer un jeu de gestion/strategie et je rencontre un probleme pour les batailles.

Lors d'une attaque les troupes se rendent sur le lieux de l'affrontement en un temps dependant de la distance qu'elles ont à parcourir.
J'ai créé un script php me permettant de générer l'issu du combat selon les forces engagée.

Mais mon probleme : Comment faire pour executer ce script au moment donné?

En esperant avoir été clair :heuuu:


Faust


RE: Exécuter un script à un moment donné - phpgamer - 25-08-2006

Une méthode très très simple serait de multiplier la distance par un nombre et ensuite, envoyer le joueur vers la page des combats comme ceci par exemple :

Code PHP :
<?php
//::: On crée la variable distance
$var_distance = 100; //100 par exemple

//::: On crée la variable qui multipliera la distance en fonction de la rapidité des troupes
$var_multiplicateur = mt_rand(1,3);
//les troupes marche plus ou moins vite, 1 = marche vite, 2 = marche moins vite, 3 marche lentement


//::: On définit var_temps qui servira a envoyé vers une nouvelle page, celle des combats
$var_temps = intval(($var_ditance * $var_distance) / 100);
//::: intval sert a arrondir a l'entier suprérieur

echo '<meta http-equiv="refresh" content="'.$var_temps.'; url=combat.php">';
?>

Avec cette technique très simpliste, il te faudra des distances de 100 en 100 et tjs supérieur a 100 sinon ca risque de faire des bug.



RE: Exécuter un script à un moment donné - Faust - 25-08-2006

Certe mais si le joueur se deconnecte entre temps?


RE: Exécuter un script à un moment donné - Loetheri - 25-08-2006

En faite, il suffit de vérifier l'heure ^^ Tu récupères l'heure dans ta BD. Si elle est dépassée, tu effectues le combat. Sinon rien.

Sauf erreur de ma part, l'issu du combat ne doit pas généré au moment précis du combat mais lors de la prochaine connexion (ou d'une autre interaction avec le joueur attaqué). Essaye de voir (si j'ai bien compris ton problème, hein ;-)) le problème autrement Smile et tu auras ta solution.


RE: Exécuter un script à un moment donné - Faust - 26-08-2006

En effet, j'y est pensé, mais admettons que le combat dois se dérouler à une heure x, et que l'on se connecte à une heure y.
Si, par exemple le defenseur construisais des troupes dans sa ville. Le combat sera généré avec les troupes de l'heure y et non celle de l'heure x.

Je sais pas si j'ai été tres clair x')

Donc voila, si vous avez une idée génial x)


RE: Exécuter un script à un moment donné - Adunaphel - 26-08-2006

Selon l'heure à laquelle la troupe arrive en jeu, tu l'utilises ou non.
En gros tu ajoutes un champs date_naissance à tes troupes, puis si elles sont arrivés avant l'heure de la bataille, elles y participent, sinon elles ne font rien.



RE: Exécuter un script à un moment donné - Loetheri - 26-08-2006

@ Faust : Cela ne pose aucun problème ^^
Lorsque ton attaque (ou espionnage) a lieu sur le personnage Z de la part du personnage L, tu fais comme si Z c'était connecté. Donc la construction de troupes, de ressources, ... si le temps nécessaire est passé. Et après tu fais le combat entre les troupes de L et Z.
Je ne vois pas où est le problème. Enfin, cela dépend aussi de comment tu vois la création des troupes :-)


RE: Exécuter un script à un moment donné - Faust - 26-08-2006

Ok merci de vos conseils ;-)


RE: Exécuter un script à un moment donné - pilo_briko - 26-08-2006

Moi je calculerer le temps au début, je le mettrait dans ma BDD. Et dans touts mes page (armée, batiment), j'ai un timastamp qui s'atualise a chaque lecture de la page. A chaque connection, tu fait:

Code PHP :
<?php
//tu récupère l'ancien timestamp de la dernière connection ($ancientps)
$temps = time();
$difference = $temps - $ancientps;

// tu récupère le temps de parcours que tu avait stocké ($tpsparcours)

$newtemps = $tpsparcours - difference;

if (
$newtemps <= 0) // si le parcours est finit
{
//tu fait ton combat
}
else
//si le parcours n'est pas finit
{
// tu modifie dans ta BDD le temps du parcours qui reste a faire par le nouveau.
}
?>

Voila le script non dévelloper que j'utilise pour la fabrication de mes batiments, de mes unités...


RE: Exécuter un script à un moment donné - Plume - 28-08-2006

Ce serait pas mal de penser à quand la cible se connecte, parce que pour l'instant de ce que j'pense avoir correctement suivi, j'ai l'impression que vous omettez ce cas. Mais bon, étant donné l'état de fatigue avancé, j'suis sûrement à coté de la plaque