14-08-2006, 01:58 AM
(Modification du message : 31-01-2009, 06:01 PM par Sephi-Chan.)
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
<?$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.
// 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;
}
// 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 '<br><br>';
echo '<input type="submit" value="Changer de carte"></form>';
// fin de l'affichage de la barre de changement de galaxie et système
//depart de la carte
echo '<br><br><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