08-14-2006, 01:58 AM
Carlou a écrit :Suite a une demande d'une map dans le genre, je vous mets ce petit tuto.
Donc a la clé, une map basée sur un système de Galaxie, système et position bien sûr.
Pas de déplacement dessus, juste de l'affichage.
creer une table table_carte avec 4 colones :
pseudo, Galaxie, systeme, position
Code PHP<?$pseudo_membre = $_SESSION['pseudo']; $requete = mysql_query("SELECT * FROM table_membre WHERE `pseudo`='$pseudo_membre'") or die(mysql_error()); $var = mysql_fetch_array ($requete); $id = $var['id']; $pseudo = $var['pseudo']; // jusqu'ici, c'est comme d'hab, on viens chercher les // informations du joueur.
Code PHP// recuperation des positions sur la carte du joueur $requete2 = mysql_query("SELECT * FROM table_carte WHERE `pseudo`='$pseudo_membre'") or die(mysql_error()); $var2 = mysql_fetch_array ($requete2); $galaxie = $var2['galaxie']; $systeme = $var2['systeme']; $position = $var2['position']; //Changement de vue if (isset($_POST['galaxie_select']) and isset($_POST['systeme_select'])) // Si changement de vue { // si on a changé de vue, les coordonnées changent $galaxie = $galaxie_select; $systeme = $systeme_select; } else { //sinon on garde les coordonnées du joueur $galaxie = $galaxie; $systeme = $systeme; }
Code PHP// Affichage de la barre de changement de galaxie et systeme echo '<form action="carte.php" method="post">'; echo 'Galaxie : '; echo '<select name="galaxie_select">'; // on affiche la sélection du système, ici 10 pour le test for($galaxie_select=1;$galaxie_select<=10;$galaxie_select++){ if ($galaxie_select == $galaxie){ $selected = 'selected'; } else { $selected = ''; } echo '<option value="'.$galaxie_select.'"'.$selected.'>'.$galaxie_select.'</option>'; } echo '</select>'; echo ' - Systeme : '; echo '<select name="systeme_select">'; // on affiche la selection du systeme, ici 200 for($systeme_select=1;$systeme_select<=200;$systeme_select++){ if ($systeme_select == $systeme){ $selected = 'selected'; } else { $selected = ''; } echo '<option value="'.$systeme_select.'"'.$selected.'>'.$systeme_select.'</option>'; } echo '</select>'; echo ''; echo '<input type="submit" value="Changer de carte"></form>'; // fin de l'affichage de la barre de changement de galaxie et système
Code PHP//depart de la carte echo '<table width="300" border="1" cellspacing="0" cellpadding="0" align="center" height="300">'; echo '<tr align="center" valign="middle" height="60">';//première ligne de la table //on va chercher les autres joueurs présents sur cette galaxie et ce systeme $sql = mysql_query( 'SELECT pseudo, galaxie, systeme, position FROM table_carte WHERE galaxie='.$galaxie.' AND systeme='.$systeme.' ORDER BY position DESC' ) or die(mysql_error()); while ($data = mysql_fetch_array($sql)) { if (empty($TabMAP[$data['position']])) $TabMAP[$data['position']] = $data['position']; //je cree un tableau avec les positions $TabMAP2[$data['position']] = $data['pseudo']; //je cree un tableau avec les pseudos } mysql_free_result($sql); for($pos=1;$pos<=25;$pos++){ // on définit la taille de la carte - ici 25 cases //*****Gestion des fins de lignes***** if ($pos == 5 or $pos == 10 or $pos == 15 or $pos == 20){ // si on arrive en fin de ligne //on ferme la ligne et on va a la ligne suivante $finligne = '</tr><tr align="center" valign="middle" height="60">'; } elseif ($pos == 25){ // si on arrive en fin de tableau //on ferme le tableau $finligne = '</tr>'; } //sinon else { //on reste sur la même ligne $finligne = ''; } //*****fin de la Gestion des fins de lignes***** // si case 13 (centre de la carte), on affiche le soleil if ($pos == 13){ echo '<th align="center" valign="middle" width="60" height="60"><img src="soleil.gif" alt="soleil" height="60" width="60"></th>'.$finligne; } else // si un autre joueur existe sur une position de la carte if(!empty($TabMAP[$pos])){ //on affiche sa flotte echo '<th align="center" valign="middle" width="60" height="60"><img src="planete.gif" alt='.$TabMAP2[$pos].' height="60" width="60"></th>'.$finligne; } else //sinon { // on affiche rien (moi j'ai mis les autres positions pour le test. suffit de faire ctrl+a pour voir apparaitre les positions echo '<th align="center" valign="middle" width="60" height="60">'.$pos.'</th>'.$finligne; } } echo '</table>'; // on ferme le tableau ?>
voila, pas le temps de détailler, si vous avez des questions, n'hésitez pas
@+
Carlou