JeuWeb - Crée ton jeu par navigateur
Création d'une map 2D en php simple mais utile - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Création d'une map 2D en php simple mais utile (/showthread.php?tid=27)

Pages : 1 2


Création d'une map 2D en php simple mais utile - Oprichnik - 14-08-2006




RE: Création d'une map 2D en php simple mais utile - orditeck - 14-08-2006

L'aide pour ce tutoriel ce trouve à cette adresse :
http://www.jeuweb.org/board/showthread.php?tid=46


RE: Création d'une map 2D en php simple mais utile - piratequentin - 11-07-2011

Bonjour,

déjà je sais que c'est un vieux sujet mais j'aimerais savoir si il serais possible que chaque cases soit un lien (j’arriverais très bien à transférer les coordonnés par l'url) et que par exemple si je clique sur de l'herbe je suis redirigé vers une page et si je clique sur un village, j'ai toutes les infos sur ce village...

Mais mon problème c'est que je ne vois pas ou je peux placer le lien et je pense aussi qu'il faudra une condition.

Je pense qu'avec une bdd ça peut être simple, j'ai le nom du village enregistré dans la bdd je le transmet dans l'url ce nom, et ensuite j'affiche toute les infos concernant ce village. (Mais bon tout cela ne servira qu'a moi ^^)

Ps: Si vous voulez je pourrais vous donner un zip avec l'amélioration (si j'ai une réponse) comme ça je pense que ça pourra aider des personnes qui veulent créer un jeu par navigateur, sauf si Oprichnik veut s'en charger.

Cordialement Piratequentin

Si je ne suis pas clair dites le moi.


RE: Création d'une map 2D en php simple mais utile - php_addict - 11-07-2011

salut

j'aurais fait plutot un truc du genre:

$karte[10][10] = 1;
$karte[11][10] = 3;
$karte[12][10] = 1;
$karte[15][10] = 2;

sinon pour ton lien:

echo "<td><a href="ton_lien.php?x='$x'&y='$y'"><img alt='$x;$y' border=0 src='$img'></a></td>";

tu aura donc des images cliquables ver ton_lien.php?x=123&y=54

tu recupere x et y dans les parametre de l'url ($_GET) et tu fait ce que tu as à faire...

ca depend de la taille de ta map et si tu l'affiche totalement ou pas, mais moi j'aurais mis ca dans une base de donnée plutot que dans un array php, il y a deja des discussions a ce sujet sur le forum d'ailleurs

a+
ou 1 serait traduit par herbe.jpg , 2 par montage.jpg etc...

d'ailleur j'aurais affiché des <div> css avec background plutot que des images dans un <table>




RE: Création d'une map 2D en php simple mais utile - piratequentin - 11-07-2011

Je te remercie je vais essayer de trouver où placer ce lien ^^


RE: Création d'une map 2D en php simple mais utile - christouphe - 11-07-2011

perso j'utilise plusieurs DIV avec des z-index croissants:

<div id="carte" style="position: relative;background:url('mon_image_de_carte'); width:300px;heidht:300px;top:100px;left:100px;z-index:0;">
<!-- Les cases "basique" -->
<div id="case_X_Y" style="position: absolute;background:url('mon_image_de_carte'); width:300px;heidht:300px;top:100px;left:100px;z-index:1;">
<a href="javascript: optionsCase(54)">
<img src="images/spacer_30_30.gif" alt="test spacer"/>
</a>
</div>

<!-- Les cases "décors" -->
<a href="javascript: optionsCase(55)">
<div style="background:url('image_du_decors');position: absolute; top: (calcul)px; left: (calcul)px; border: 1px solid black; width: (taille_case - 1)px; height: (taille_case - 1)px; z-index: 2">
</div>
</a>
</div>



RE: Création d'une map 2D en php simple mais utile - piratequentin - 11-07-2011

Je sais pas si on c'est très bien compris ^^ ou si c'est moi qui explique mal Confusediffle:.
Donc pour faire plus simple je vais expliquer avec un screen:

[Image: 262924screen.jpg]

En faite, je voudrais que les cases en rouge (j'en ai mis que deux j'avais la flemme de tout faire ^^) lorsque je clique dessus je sois redirigé vers une autre page,
et si ton lien était bien j'aimerais savoir où je doit le placer (et comment).
Est-ce que ça serais à l'endroit où l'on initialise la position des villages?

Je vous remercie de vos réponses à venir
Cordialement.



RE: Création d'une map 2D en php simple mais utile - Ter Rowan - 11-07-2011

pour répondre au mieux, il faudrait que tu montre un petit extract du code html de ta carte (ou encore mieux la version php qui génère ta map)

on pourra alors te dire précisement quoi modifier


RE: Création d'une map 2D en php simple mais utile - php_addict - 11-07-2011

(11-07-2011, 10:54 AM)piratequentin a écrit : Je te remercie je vais essayer de trouver où placer ce lien ^^

je te l'ai dit...relire mon post précédent (<a href> )


RE: Création d'une map 2D en php simple mais utile - piratequentin - 11-07-2011

Code :
<?php

// Données carte

    */
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=****;dbname=*****', '*****', '*****', $pdo_options);
    
    $reponse = $bdd->query('SELECT Pos_x, Pos_y, Nom, Id FROM map');
    
    while ($donnees = $reponse->fetch())
    {
    $karte[$donnees['Pos_x']][$donnees['Pos_y']] = "village.jpg" ;
    }
    
    $reponse->closeCursor();
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
$pos = @$_GET["pos"]; // Ici on récupère la valeur de la position pour pouvoir afficher



if($pos == "" or ereg("^-?[0-9]{1,};-?[0-9]{1,}$",$pos) == false)
$pos = "-7;7";


$pos_tab = explode(";",$pos);

unset($pos);

$pos["x"] = $pos_tab[0];
$pos["y"] = $pos_tab[1];

// On arrive à la fonction :)
function karte($pos_x,$pos_y,$size)
{
  

  $end_x = $pos_x + $size;

  $end_y = $pos_y - $size;

  
  global $karte;
  
  echo "
  <table border=0 cellpadding=0 cellspacing=0>
  <tr>
  <td><a href=\"karte.php?pos=".($pos_x-1).";$pos_y\">Gauche</a>&nbsp</td>
  <td align=\"center\"><a href=\"karte.php?pos=$pos_x;".($pos_y+1)."\">Haut</a>
  ";
  
  echo "<table border=1 cellpadding=0 cellspacing=0>";
  
  
  for($y=$pos_y;$y>$end_y;$y--) // Première boucle qui va afficher les lignes y (les balises <tr> du tableau)
  {
    
  
    
    echo "<tr>";
    
    for($x=$pos_x;$x<$end_x;$x++) // Deuxième boucle qui va afficher les colonnes x (les balises <td> du tableau)
    {
      
      // idem que au dessus à l'exception que les x augmentent lorsqu'on va vers la droite et ne diminuent pas..
      
      if(isset($karte[$x][$y])) // On regarde si l'emplacement est défini dans le tableau
      $img = $karte[$x][$y]; // Si oui on prend dans la variable $img l'image du tableau
      else
      $img = "herbe.jpg"; // Si non on met dans $img une image d'herbe
      
      echo "<td><img alt='$x;$y' border=0 src='$img'></td>";
      // On affiche l'image avec comme texte alternatif les coordonnées de la case

    }
    
    echo "</tr>";
    
}


echo "
</table>
<a href=\"karte.php?pos=$pos_x;".($pos_y-1)."\">Bas</a>
</td>
<td align=\"center\">&nbsp<a href=\"karte.php?pos=".($pos_x+1).";$pos_y\">Droite</a></td>
</tr></table>
";

}

?>

<center>
<h1>La carte</h1>
<br>
<?php
// On affiche la carte avec une taille de 15 cases
karte($pos["x"],$pos["y"],15);
?>

Et voila à quoi ressemble la bdd

Id Nom Pos_x Pos_y
1 Village1 0 0
2 village2 -3 -3
3 village3 -8 -9

Cordialement

Ps: Php_Addict je vais faire de mon mieux.