09-04-2008, 09:56 PM
(Modification du message : 13-07-2008, 12:03 PM par Sephi-Chan.)
Voilà, je suis en train de coder mon système pour afficher les batiments. Jusqu'a là c'est facile.
Je peut afficher un batiments si les conditions de constructions sont correctes.
Mais j'ai un souci. Pour que mon système fonctionne il faut que TOUS les batiments soient entrés dans la base de donnée, or c'est hyper lourd comme truc.
Le code est plus parlant que des mots, voilà mon 'tit système, qui n'est pas optimisé :
Le contenu simplifier de la base de donnée des batiments du jeu :
Donc la pour que la mine d'or puisse s'afficher il faut que la mine de fer soit au niveau 5.
Pour l'autre c'est le même principe, mine de fer niveau 10 et mine d'or niveau 5.
Le contenu de la table qui liste les batiments présants sur la planète du joueur :
Içi la planète 1, dispose d'une mine de fer de niveau 10 et d'une mine d'or niveau 5.
Les requetes sql:
Je peut afficher un batiments si les conditions de constructions sont correctes.
Mais j'ai un souci. Pour que mon système fonctionne il faut que TOUS les batiments soient entrés dans la base de donnée, or c'est hyper lourd comme truc.
Le code est plus parlant que des mots, voilà mon 'tit système, qui n'est pas optimisé :
Le contenu simplifier de la base de donnée des batiments du jeu :
sc_table_info_bat a écrit :|..ID..|..nom_bdd..|..nom...........|..condition_1..|..condition_2..|
|...1..|..mine_fer...|.Mine de Fer..|...................|....................|
|...2..|..mine_or....|.Mine d'or......|......1, 5........|....................|
|...3..|..mine_res....|.Mine..........|......1, 10.......|.........2, 5.....|
Donc la pour que la mine d'or puisse s'afficher il faut que la mine de fer soit au niveau 5.
Pour l'autre c'est le même principe, mine de fer niveau 10 et mine d'or niveau 5.
Le contenu de la table qui liste les batiments présants sur la planète du joueur :
sc_table_planete_bat a écrit :|..id_planete..|..id_batiments..|..niveau..|
|........1........|.........1..........|......10.....|
|........1........|.........2..........|......5.....|
|........2........|.........1..........|......5.....|
Içi la planète 1, dispose d'une mine de fer de niveau 10 et d'une mine d'or niveau 5.
Les requetes sql:
Code PHP :
<?php
//
$requete_info_joueur = mysql_query('SELECT * FROM sc_table_comptes WHERE id="' . $_SESSION['id_joueur'] . '"') or die (mysql_error());
$sql_info_joueur = mysql_fetch_assoc($requete_info_joueur);
//
$requete_planete_joueur = mysql_query('SELECT * FROM sc_table_planete WHERE id_planete="'.$_SESSION['id_planete'].'" ') or die (mysql_error());
$sql_planete_joueur = mysql_fetch_assoc($requete_planete_joueur);
//
$requete_data_bat = mysql_query('SELECT * FROM sc_table_info_bat INNER JOIN sc_table_planete_bat
ON sc_table_info_bat.id = sc_table_planete_bat.id_batiments
WHERE sc_table_planete_bat.id_planete="'.$_SESSION['id_planete'].'" ') or die(mysql_error());
//
Jusqu'à la rien de bien compliquer.
Ensuite la page qui affiche les batiments :
Code PHP :
<?php
while ($sql_data_bat = mysql_fetch_assoc($requete_data_bat) )
{
// On creer des variables unique pour chaque batiments
${'sql_data_bat_' . $sql_data_bat['id']} = $sql_data_bat;
// Fait resortir une variable du type $sql_data_bat_2
// On listes les conditions pour chaque batiments
${'array_condi_1_' . $sql_data_bat['id']} = explode(', ', $sql_data_bat['condition_1']);
${'array_condi_2_' . $sql_data_bat['id']} = explode(', ', $sql_data_bat['condition_2']);
// Fait resortir un array ou l'on trouve les conditions pour le batiment
// La cle ['0'] donne l'id du batiments, la cle ['1'] donne le niveau du batiments
// Fait resortir une variable du type $array_condi_1_2
//
${'condition_1_' . $sql_data_bat['id'] . '_' . ${'array_condi_1_' . $sql_data_bat['id']}['0']} = ${'array_condi_1_' . $sql_data_bat['id']}['1'];
${'condition_2_' . $sql_data_bat['id'] . '_' . ${'array_condi_2_' . $sql_data_bat['id']}['0']} = ${'array_condi_2_' . $sql_data_bat['id']}['1'];
// Fait resortir une variable du type $condition_1_2['0']=1
if ( ${'sql_data_bat_' . ${'array_condi_1_' . $sql_data_bat['id']}['0']}['niveau'] >= ${'condition_1_' . $sql_data_bat['id'] . '_' . ${'array_condi_1_' . $sql_data_bat['id']}['0']}
&& ${'sql_data_bat_' . ${'array_condi_2_' . $sql_data_bat['id']}['0']}['niveau'] >= ${'condition_2_' . $sql_data_bat['id'] . '_' . ${'array_condi_2_' . $sql_data_bat['id']}['0']} )
{
?>
<form action="fonctions/batiments.php?valeur=valide" method="POST">
<div id="cellule_batiments">
<p class="titre_batiments">
<span class="nom_batiments"><?php echo $sql_data_bat['nom'];?> (</span><span class="level_batiments"><?php echo $sql_data_bat['niveau']?></span><span class="nom_batiments">)</span>
</p>
<p>
<img src="<?php echo $sql_data_bat['image'] ?>" class="image_batiments"><br />
<span class="info_batiments">
Fer : <?php echo number_format(($sql_data_bat['niveau']*$sql_data_bat['prix_fer']), 0, ',', ' ');?><br />
Or : <?php echo number_format(($sql_data_bat['niveau']*$sql_data_bat['prix_or']), 0, ',', ' '); ?><br />
</span>
<input type="hidden" name="nom_bdd" value="<?php echo $sql_data_bat['nom_bdd']; ?>" />
<input type="hidden" name="niveau" value="<?php echo $sql_data_bat['niveau']; ?>" />
<input type="hidden" name="id_batiments" value="<?php echo $sql_data_bat['id_batiments']; ?>" />
<span class="action_batiments">
<input name="construire" type="submit" value="Construire niveau <?php echo $sql_data_bat['niveau']+1;?>" />
<input name="detruire" type="submit" value="Détruire niveau <?php echo $sql_data_bat['niveau'];?>" />
</form>
<form method="POST">
<input type="submit" value="Paramétrer" />
</span>
<div class="description_batiments"><?php echo $sql_data_bat['description'];?></div>
</p>
</div>
</form>
<?php
}
}
?>