Aller au contenu

Jeux php, générer des tours?


fingolfin

Sujets conseillés

Bah voilà, dans ma lancer des questions qui soule tous le monde, je me suis dit pourquoi pas demander comment générer des tour dans un jeux php (qui est mon projet et qui avance bien grâce à ce forum justement), donc la questions que vous avez devinez: Comment ont fait pour générer des tour? (toutes les heure ou 30 minutes) dans un jeux php? (ce serait bête qu'il n'y est pas de tour lol), merci d'avance pour vos réponse :)

Modifié par fingolfin
Lien vers le commentaire
Partager sur d’autres sites

Dans la logique des choses, si tu as des tours tu es sensé avoir des parties. Éventuellement dans un premier temps tu n'auras qu'une seule partie en cours. Mais pour te simplifier la vie (lorsque ton jeu évoluera et qu'il y aura plus d'une partie simultanément) je vais partie du principe que tu as une table qui regroupe les parties en cours, ce n'est pas un grand mal si elle ne contient qu'un seul enregistrement au début.

Donc dans cette table tu as un champ ID pour la partie, la date et l'heure (donc du type : DATETIME) à laquelle elle a démarré (je l'appelle start_date ci-après), son status actuel (en cours, en pause, fermé, ... on peut imaginer plein de choses) et éventuellement le titre de la partie ou tout autre information que tu juges nécessaire.

Ensuite au moment tu affiche la partie en cours il te suffit de vérifier la différence entre la date actuelle et la date de démarrage de ta partie. Tu trouvera une mirade de fonctions pour gérer les dates dans le manuel PHP qui a une section ( http://www.php.net/manual/fr/ref.datetime.php ) dédiée à ceci, je ne vais pas développer ton code à ta place (je sais que ce n'est pas ce que tu attends, je tiens juste à le précsiser. Si la différence entre ces deux dates et heure fait plus de x minutes tu peux supprimer la partie ou la modifier et remttre les scores à 0 pour les joueurs qui y participent et incémenter un nombre de tours qui ferait l'office d'un champ...à toi de voir ou de nous dire.

PS: Regarde dans les commentaire des pages du manuel de PHP, tu trouveras ton bonheur pour faire la différence entre 2 dates.

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

cron est une application (Linux en général, sous Windows tu as le Plannificateur de tâche en moins performant) qui permet de programmer des tâches à intervalles régulières (plus ou moins). Par exemple l'exécution d'un script. KaRaK te conseille ceci, mais toutefois tu dois avoir un accès en mode ligne de commande sur le serveur hébergant ton fichier par exemple sur un serveur dédié... Je suppose que ce ne sera pas ton cas...tu peux également passer par un service gratuit comme http://www.webcron.org/ .

Mais si tu souhaites être indépendant de tout service supplémentaire tu peux simplement vérifier que le tour en cours ne soit pas terminé avant d'effectuer une opération dans ton jeux...

P.S. : On parle de crontab (en un mot) car c'est au moyen d'un fichier nommé ainsi que l'on configure cron .

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

Beuh le plus simple c'est de s'héberger sois même je trouve moi...non? Au moins c'est gratuit, tu est sur de pas avoir à changer d'hébergeur (ou du moins tu sais quand es ce que tu vas le faire).

Au passage je pose la même questions que sur l'autre topic lol:

Voici le code:

$nhabitantp = "(maison1 * 2) + (maison2 * 5) + (maison3 * 12) + (maison4 * 16)";?>  

<p> Vos habitations vous permettent de loger:<? echo $nhabitantps?> habitants.

Donc vous avez devinez je veut afficher le nombre d'habitant qu'il y a, mais avec ce code sa m'affiche le calcul au lieu du résultat...

Modifié par fingolfin
Lien vers le commentaire
Partager sur d’autres sites

Plusieurs choses, tout d'abord cela t'affiche la cacul car tu met le tout entre guillemets. Donc PHP considère tout ce qui se trouve entre ces guillemets est une chaîne de caractères. Enlève les guillemets et ton calcul s'effectuera.

Deuxièmement, tu as oublié les "$" qui doivent précéder chaque variable si tu souhaite en obtenir la valeur.

Ensuite comme dans tout langage de programation il existe un précédence des opérateurs (comme en mathématique généralement ;) ). Donc tes parenthèses sont inutiles pour PHP (bien qu'elle t'aident sûrement à te représenter le calcul).

$nhabitantp = $maison1*2 + $maison2*5 + $maison3 * 12 + $maison4 * 16;?>  

Et finalement, tu as oublié dans ta dernièpre ligne un ";" et ajouté un s :

 Vos habitations vous permettent de loger:<? echo $nhabitantp; ?> habitants.

Fais très attention, l'orthographe et la casse (majuscules/minuscules) sont très importants en PHP.

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

Bah en faites j'ai pas mit de "$" car c'est censer êtres les nombres indiquer dans les champs... bah après vérification ni l'un ni l'autre ne marche lol, faut surement que je face des requêtes pour affciher le nombre dans les champs que je multiplierais par el nombre de maison non?

Autrement les guillement bah je croyais qu'ils étaient obliger car les calcul pour dire l'or qui reste après la construction des maisons bah j'en avait pas mit sa marchait po lol.

Lien vers le commentaire
Partager sur d’autres sites

Je partais du principe que tu avais fait la requête pour obtenir tes valeurs... mais bon là c'est quand même les toutes bases de la logique...

Lien vers le commentaire
Partager sur d’autres sites

Bah je vais les mettre lol, car y'a des momment faut pas de requête et à d'autres y'en faut, donc tant que je serais un noob bah je trouverait surement pas du premier coup lol

Euh y'a un blem, j'ai 0 maison 1, 2, 3 et 4 donc 0 habitants possible et l'ordi me dit que j'en ai 124 :blink:

Modifié par fingolfin
Lien vers le commentaire
Partager sur d’autres sites

Ce n'est pas une question de hasard ou de moment. Si tu as besoin de données de ta base de données, tu dois faire une requête. À moins que tu l'ait déjà fait précédemment dans le script et qu'il n'est pas NECESSAIRE de le refaire.

Tu admeteras que redemander les données qui se trouvent déjà dans une variable à chaque fois que tu veux afficher quelque chose ne paraît pas très logique...vu que tu les as déjà...

De plus si tu as utilisé $donnees = mysql_fetch_array($reponse); pour récupérer tes donnés, tu auras à faire à quelque chose comme $donnees['maison1'] .. et non juste $maison1 ...

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

Bah oui j'ai pas dit l'inverse moi lol

Marrant ce bug qui me dit que j'ai 124 habitant, même si ont prend les numéros des maisons que l'on multiple au nombre qui est censer les multiplier et qu'on additionne le tous bah ont obtient pas 124...

Modifié par fingolfin
Lien vers le commentaire
Partager sur d’autres sites

Il ne faut pas non plus abuser, 12 minutes après ton message (une fois édité) tu n'as, selon les règle du forum, pas le droit de "remonter" un sujet...

Pour ton problème... comme d'habitude, si tu met le code que tu as utilisé pour ton calcul cela nous aiderait beaucoup...là on ne sait pas si tu utilise le code que je t'ai donné, celui d'origine ou même un autre...

Lien vers le commentaire
Partager sur d’autres sites

Euh bah désolé pour le message alors ( il faudras que j'aille relire les règles) voici le code que j'utilise:

$maison1c = mysql_query("SELECT chaumiere FROM membre");
$maison2c = mysql_query("SELECT dchaumiere FROM membre");
$maison3c = mysql_query("SELECT gchaumiere FROM membre");
$maison4c = mysql_query("SELECT bgchaumiere FROM membre");
$nhabitantp = ($maison1c*2) + ($maison2c*5) + ($maison3c*12) + ($maison4c*16);?>  

<p> Vos habitations vous permettent de loger:<? echo $nhabitantp;?> habitants.  

Modifié par fingolfin
Lien vers le commentaire
Partager sur d’autres sites

Euh bah désolé pour le message alors (faudras j'aille relire les règles) voici le code que j'utilise:

$maison1c = mysql_query("SELECT chaumiere FROM membre");
$maison2c = mysql_query("SELECT dchaumiere FROM membre");
$maison3c = mysql_query("SELECT gchaumiere FROM membre");
$maison4c = mysql_query("SELECT bgchaumiere FROM membre");
$nhabitantp = ($maison1c*2) + ($maison2c*5) + ($maison3c*12) + ($maison4c*16);?>  

<p> Vos habitations vous permettent de loger:<? echo $nhabitantp;?> habitants.  

<{POST_SNAPBACK}>

Si tu lise le manuel de PHP pour la fonction mysql_query, tu verras que cette fonction retourne une "ressource". Et donc additionner des ressources n'est en aucun cas sensé. Pour obtenir les données se trouvant dans ces ressources tu dois utiliser un fonction comme mysql_fetch_array.

Puis si tu souhaite le total de TOUTES les maisons pour TOUS les memebres il faut utiliser une fonction MySQL nommée "SUM" (Somme en français). Donc cela donnerait quelque chose comme :

$results = mysql_query("SELECT SUM(chaumiere) AS sum_chaumiere, SUM(dchaumiere) AS sum_dchaumiere, SUM(gchaumiere) AS sum_gchaumiere, SUM(bgchaumiere) AS sum_bgchaumiere FROM membre");
$datas = mysql_fetch_array($results);
$nhabitantp = $datas['sum_chaumiere']*2 + $datas['sum_dchaumiere']*5 + $datas['sum_gchaumiere']*12 + $datas['sum_bgchaumiere']*16; ?>
<p> Vos habitations vous permettent de loger:<? echo $nhabitantp;?> habitants.  

Si tu veux seulement pour un membre :

$results = mysql_query("SELECT chaumiere, dchaumiere, gchaumiere, bgchaumiere FROM membre WHERE id=".$_SESSION['idmembre']);
$datas = mysql_fetch_array($results);
$nhabitantp = $datas['chaumiere']*2 + $datas['dchaumiere']*5 + $datas['gchaumiere']*12 + $datas['bgchaumiere']*16; ?>
<p> Vos habitations vous permettent de loger:<? echo $nhabitantp;?> habitants.  

Lien vers le commentaire
Partager sur d’autres sites

Bah tous ce que je peut dire, encore une fois c'est merci sa marche encore perfect (je croit qu'avec tous ce que tu me dit je vais pouvoir me faire un livre de cours personelle ^_^ )

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...