JeuWeb - Crée ton jeu par navigateur
Création de map - 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 de map (/showthread.php?tid=4456)

Pages : 1 2


Création de map - anthono - 22-11-2009




RE: Création de map - Crimson - 22-11-2009

Juste comme ça si le code ressemble bien à ce que tu as posté, tu devrais peut être évité la longue série de if pour déterminer le type de case.

Citation :
Code PHP :
<?php 
if($affich_decors['type'] == '1')
{
$decors = "../game/img/terre.jpg";
}
if(
$affich_decors['type'] == '2')
{
$decors = "../game/img/foret.jpg";
}
if(
$affich_decors['type'] == '3')
{
$decors = "../game/img/eau.jpg";
}
if(
$affich_decors['type'] == '4')
{
$decors = "../game/img/sable.jpg";
}
if(
$affich_decors['type'] == '5')
{
$decors = "../game/img/route.jpg";
}

A la place tu mets
Code PHP :
<?php 
$decors
= "../game/img/".$affich_decors['type'].".jpg";

Tu as juste à renommer tes images de 1 à n et c'est plus simple que de faire n tests successifs. Ou au moins remplace le par un switch.

Apres ta carte est peut être mal générée.
Déjà tu fais une requête sur toute ta table pour générer un tableau que tu ne vas pas parcourir en entier.
Effectue plutot une requete pour récupérer seulement les éléments que tu vas afficher.
Code PHP :
<?php 
$decors
= mysql_query("SELECT * FROM jeu_map WHERE pos_x > ".$min_x." AND pos_x" < ".$max_x."
AND pos_y > ".$min_y." AND pos_y < ".$max_y.");

Et sinon il y a un problème de fermeture de balise dans ton exemple.

Et avoir une carte qui fait 600x600 bah ça dépend juste de la taille de tes images et du nombre d'images affichées.


RE: Création de map - anthono - 22-11-2009

Merci,je vais utilisez tes conseils.

Anthono


RE: Création de map - jo_link_noir - 22-11-2009

Salut,

Tu réaffectes une valeur à $decors et ça ne devrait pas être le cas. Au début c'est une ressource et ensuite une chaine de caractère donc la boucle ne ce fait plus car mysql_fetch_array attend une ressource. Au passage tu pourrais réduire l'enchainement de if en mettant tous dans un tableau, un peu comme ça :

$terrains = array('terre', foret', 'eau', 'sable', 'route');
while ($affich_decors = mysql_fetch_array($decors) )
{
$karte[$affich_decors['pos_x']][$affich_decors['pos_y']] = "../game/img/{$terrains[$affich_decors['type']]}.jpg";
}


Pour agrandir la carte suffi d'avoir les casses en bdd et récupéré que la partit qui intéresse. Par exemple si tu veux un carré de 11*11 cases, il faut mettre une condition dans la requête :
Citation :pos_x > $pos_x - 5 && pos_x < $pos _x+ 5 && pos_y > $pos_y - 5 && pos_y > $pos_y + 5


Par rapport au début
- Ne pas mettre @ mais utiliser isset pour vérifier l'existence de la variable
- Tu peux éliminer ereg pour directement utiliser explode
$pos =explode(";", $_GET["pos"]);
$pos = array(
'x' => isset($pos[0]) ? (int)$pos[0] : 0,
'y' => isset($pos[1]) ? (int)$pos[1] : 0,
);

Bon bah Crimson à été plus rapide...


RE: Création de map - anthono - 22-11-2009

Merci, j'aprécies vos conseils mais je ais utilisé la maniére de crimson pour les images

Anthono


RE: Création de map - Crimson - 22-11-2009

Oui mais en fait il vient de te trouver le pourquoi tu n'as qu'une case d'affichée.

Parce que tu parcours les enregistrements contenu dans la variable $decors et qu'en fait tu stockes le chemin de l'image dans la variable $decors;

Donc forcément il ne va pas parcourir qu'un enregistrement.

Bien vu j'avais pas fait gaffe.


RE: Création de map - anthono - 22-11-2009

Ouai je m'en suis apercu aussi a l'instant donc tous marche sauf la condition pour mon select que je suis en train de faire.

Anthono


RE: Création de map - Argorate - 23-11-2009

anthono :

deux petites remarques:

-le premier c'est que si tu nomes tes images de terrain avec le numéro d'identifiant de celui-ci, cela permet d'afficher le terrain en mettant directement dans le src de l'image $num_terrain.gif...
(plus besoin de tout ces if...)

-Mais si tu tente a garder des trucs inutile, je te conseil cependant, pour ce qui concerne t'a belle rangé de if les un a la suite des autres, de faire un if suivi de elseif et finir par un else Smile

Vilou, bonne chance.


RE: Création de map - Crimson - 23-11-2009

Un switch c'est quand même plus beau qu'une longue ligne de elsif. :ange:


RE: Création de map - Anthor - 23-11-2009

Oui mais argorate aime l'optimisation ^^

HS: Mais les barres de progression n'ont pas été remis, ce sera fait ce soir.