|
|
|
|
Bonjour ou bonsoir
Voila avec quelque amis on a décider que créer un jeu style Ogame (c'est plus un defis que autre chose vu qu'on est dans une filiere informatique), le jeu un pratiquement finit mais 1 probleme se pose c'est avec le compte a rebours biensur j'en ai trouver des tonnes et des tonnes sur le net, mais pas celui que je voulais exactement. En faite, j'essaie de faire un compte a rebours en passant par php, puis stocker le compte a rebours dans mysql puis l'afficher dynamiquement avec javascript.
Sa fait quelque jour que j'essaie mais la je pète un cable(desoler d'etre grossier) au bout d'un moment j'ai reussi mais a l'envers par ex il est 9h30 pour arriver a 10h donc il reste 30mn00sec ben moi sa fait 30mn01sec 30mn02sec etc... puis c'est tous ce que j'ai reussi a faire et j'ai toujours pas reussi a stocker le temps dans la BDD,
alors si vous pouviez m'aider je vous en serai reconnaissant
Un grand merci d'avance
Configuration: Windows XP Firefox 2.0.0.6
Bjr
|
En gros tu veux savoir comment faire une requete sql en php ...
|
Bonjour et merci pour vos réponse.
|
Ben j'ai remarquer que quand je ne clique pas $last = go quand je clique $last = stop mais le probleme que j'ai vu aussi c'est que une fois le cpt finit $last = stop quand meme donc sa marche pas j'ai modifier mon fichier a partir
|
Re
mysql_connect('localhost','root','');
mysql_select_db('test');
$data = mysql_query('SELECT usine, tpsusine FROM batiment');
while($donnees = mysql_fetch_array($data))
{
$usine1 = $donnees['usine'];
$tpsusine1 = $donnees['tpsusine'];
$usine = $usine1;
$tpsusine = $tpsusine1;
mysql_connect('localhost','root','');
mysql_select_db('test');
mysql_query("INSERT INTO batiment VALUES ('$usine','$tpsusine','','')");
mysql_close();
}
ce qui devrait être : $link=mysql_connect('localhost','root','');
mysql_select_db('test',$link);
$data = mysql_query('SELECT usine, tpsusine FROM batiment',$link);
while($donnees = mysql_fetch_array($data))
{
$usine = $donnees['usine'];
$tpsusine = $donnees['tpsusine'];
mysql_query("INSERT INTO batiment VALUES ('$usine','$tpsusine','','')",$link);
}
mysql_close();
PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
Oui je c'est que j'ouvre deux fois la connexion c'est parce que j'essai plusieurs truc en meme temps et c'est vrai que sa ren confus tout mon code en gros j'ai ma page index.php qui affiche 1 tableau diviser en 3 avec l'image de la construction, un descriptif puis le cpt quand tu lance ton cpt une fois arriver a la fin tu monte de niveau pour ta contruction la variable $usine et le niveau $tpsusine est le temps de la construction.
|
Ouais c'est un peu plus clair... mais comme je suis pas un spécialiste des jeux. Une usine : tu construis quoi au juste ? c'est interractif ? T'aurais pas un screenshoot ou une démo en ligne pour que je me fasse une idée ?
|
Ben en faite pour gagner un niveau effectivement il faut attendre la fin du compte a rebours puis en fonction du niveau de l'usine tu gagne certaine ressource pour pouvoir construire d'autre truc, c'est comme le jeu ogame.fr sur ce jeu ta une planete puis tu dois construire certain batiment pour gagner des ressources et pour avoir des nouvelles armes, pour aller faire la guerre contre des ennemis.
|
Ouais je pense que ton jeu est réalisable mais ça demande qd même des notions en prog plutôt pointues.
|
Oui je suis bien dans la filiere info plus précisement en 2ème année de bts informatique de gestion administrateur de réseaux (donc je suis pas sensé faire de la progra puis je m'y connais que en HTML, mysql et php j'ai commencer il y a environ 2mois et demi et le javascript je m'y suis pas encore m'y lol).
|
Bjr
|
Ouai le reseau moi j'aime bien puis le développement j'aime bien aussi (mais ce qu'il proposer en developpement ne m'interresser pas tu parle Visual Basic Génial!!!! lol) toi t'es dans quoi??
|
Bonjour
|
Bjr
mysql_query("INSERT INTO essai VALUES('$date','')");
D'abord tu n'es pas obligé d'insèrer un nouvel enregistrement à chaque fois qu'un joueur recharge la page (sauf si tu veux logger tous les accès). Tu peux te contenter de mettre à jour la date dans un nouveau champ que tu pourrais appeller par ex date_dernier_acces. $rep = mysql_query("SELECT date FROM essai") or die(mysql_error());
while($data = mysql_fetch_array($rep))
{
$tot = ($data['date'] - $fin);
}
Pourquoi est-ce que tu ne tries pas tes enregistrements par date décroissante dans la requête ? Comme ça il te suffit de lire juste le 1er enregistrement retourner : il contiendra forcément la date la plus récente. Et tu n'as plus besoin de boucler. De toute façon ici relire ta base de données ne sert à rien, puisque tu sais déjà que $tot = $date - $fin; !!! Et que le résultat vaut -100 dans presque tous les cas ! Hé oui ! Quant au reste je vois pas trop ce que tu essaies de faire : peut être convertir une durée en HH:MM:SS ? En tout cas : while($secondes > 60)
{
$minutes++;
}
ça risque d'assommer voir de planter le serveur PHP si le timeout est trop long ! ce que tu as écrit s'appelle une boucle infinie ! Et y'en a d'autres !!!!! Bref tu me mets ce code sur un serveur en prod et je te tues ! lol Désolé mais faut tout réécrire : c'est pas juste une petite correction ici ou là . PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
Re
<?php
$pseudo="";
$restant=0;
// Si le pseudo est passé à la page en tant que paramètre
if (isset($_POST["pseudo"]))
{
$command="";
if (isset($_POST["command"])) $command = $_POST["command"];
$pseudo =$_POST["pseudo"];
// Connexion à MySQL
$cfg_hostname="localhost";
$cfg_username="root";
$cfg_password="";
$cfg_database="game";
$link=mysql_connect($cfg_hostname, $cfg_username, $cfg_password) or die("Can\'t connect to MySql server !");
// Sélection de la base de données
$result=mysql_select_db($cfg_database,$link) or die("Impossible de sélectionner la base ".$cfg_database." !");
// Recherche si le pseudo du joueur est déjà dans la table player
$query = "SELECT * FROM player WHERE pla_pseudo='".$pseudo."'";
$result=mysql_query($query,$link);
if (!$result)
{
echo "query = ".$query."\n";
echo "mysql_errno = ".mysql_errno($link)."\n";
echo "mysql_error = ".mysql_error($link)."\n";
exit;
}
// Aucun résultat retourné par le SELECT -> le joueur n'est pas dans la table
if (mysql_num_rows($result) == 0)
{
$date=date("Y-m-d H:i:s");
// Ajoute le joueur dans la table
$query = "INSERT INTO player (pla_pseudo,pla_date) VALUES ('".$pseudo."','".$date."')";
$result=mysql_query($query,$link);
}
else
{
if ($command == "new") // Si une commande pour nouvelle partie
{
$date=date("Y-m-d H:i:s");
// Met à jour la date pour le joueur dans la table
$query = "UPDATE player SET pla_date='".$date."' WHERE pla_pseudo='".$pseudo."'";
$result=mysql_query($query,$link);
}
else
{
// Lit la date et l'heure à laquelle le jeu à commencer
$row = mysql_fetch_object($result);
$date = $row->pla_date;
}
}
// Convertit la date au format "YYYY-MM-DD HH:MM:SS" en TimeStamp
$timestamp=mktime(substr($date,11,2),substr($date,14,2),substr($date,17,2),substr($date,5,2),
substr($date,8,2),substr($date,0,4));
$startdate=date("d/m/Y à H:i:s",$timestamp);
$duree = 100; // Durée allouée à la partie : 100 secondes
$restant=$duree-(time()-$timestamp);
if ($restant < 0) { $restant = 0; }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
<head>
<title>Game</title>
<style>
body
{
font-size:10pt;
font-family:Arial;
}
div img
{
padding:0px;
margin:0px;
display:inline;
border-width:0px;
}
</style>
<script type="text/javascript">
<!--
function toHMS(duree)
{
var temps = new Array();
var hh = Math.floor(duree/3600);
var mm = Math.floor((duree-hh*3600)/60);
var ss = duree-hh*3600-mm*60;
temps[0]=Math.floor(hh/10);
temps[1]=hh-temps[0]*10;
temps[2]=Math.floor(mm/10);
temps[3]=mm-temps[2]*10;
temps[4]=Math.floor(ss/10);
temps[5]=ss-temps[4]*10;
return temps;
}
var restant=<?php echo $restant; ?>;
function decompte()
{
var seq = toHMS(restant);
for (var i=0; i < 6; i++)
{
document.getElementById("seq_"+i).src="c"+seq[i]+".gif";
}
if (restant)
{
restant--;
window.setTimeout("decompte()",1000);
}
else
{
alert("Game over !");
}
}
// -->
</script>
</head>
<body <?php if ($restant) echo "onload=\"decompte()\"";?>>
<?php if (isset($pseudo) && ($pseudo)) {echo "Bienvenue ".$pseudo."<br/><br/>";} ?>
<?php if (isset($startdate)) {echo "Partie démarrée le ".$startdate."<br/><br/>";} ?>
<div>
Temps restant <img id="seq_0" src="c0.gif"><img id="seq_1" src="c0.gif"><img src="colon.gif"><img id="seq_2" src="c0.gif"><img id="seq_3" src="c0.gif"><img src="colon.gif"><img id="seq_4" src="c0.gif"><img id="seq_5" src="c0.gif">
</div>
<br/>
<br/>
<br/>
<br/>
<?php
if (!isset($_POST["pseudo"]))
{
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";
echo "Entrez votre pseudo ";
echo "<input type=\"text\" id=\"pseudo\" name=\"pseudo\">\n";
echo "<input type=\"submit\" value=\"Connecter\">\n";
}
else
{
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n";
echo "<input type=\"hidden\" id=\"command\" name=\"command\" value=\"new\">\n";
echo "<input type=\"hidden\" id=\"pseudo\" name=\"pseudo\" value=\"".$pseudo."\">\n";
echo "<input type=\"submit\" value=\"Recommencer une nouvellle partie\">\n";
}
?>
</html>
Tu dois créer une base nommée game et à l'intérieur une table nommée player avec la structure suivante : CREATE TABLE `player` ( `pla_id` int(11) NOT NULL auto_increment, `pla_pseudo` varchar(40) NOT NULL default '', `pla_date` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`pla_id`) ) TYPE=MyISAM AUTO_INCREMENT=3 ; cet exemple réutilise les images de mon précédent compteur. La première fois qu'on lance la page game.php le compteur ne tourne pas et tu dois entrer un pseudo. Ensuite la page est rechargée et le compteur tourne. A tout moment tu peux fermer ton navagateur et te reconnecter : le compteur sera alors mis à jour. Tu peux aussi relancer une nouvelle partie avant la fin du jeu. Nota : j'ai mis 100 secondes comme durée de la partie. Voilà PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
Un grand merci sa marche nickel mais le truc c'est que une fois le navigateur fermer le cpt reviens a zero et moi je voudrais qu'il continue, mais tu en as déjà beaucoup fait si sa te derange pas je pourrais essayer de le modifier pour le faire tourner a ma sauce.
|