JeuWeb - Crée ton jeu par navigateur
[Résolu] Isométrie avec tuiles carrées - 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 : [Résolu] Isométrie avec tuiles carrées (/showthread.php?tid=3455)

Pages : 1 2 3


RE: Isométrie avec tuiles carrées. - Zack - 19-12-2008

En effet, c'est mieux que tu réflechisses par toi-même.
Mais déjà je peux te dire qu'il vaut mieux que t'évites de faire ta requête dans une boucle. Fait la avant d'entrer dans celle-ci en stockant tout dans un tableau.


RE: Isométrie avec tuiles carrées. - keke - 19-12-2008

(19-12-2008, 12:34 PM)horexas a écrit : Merci zack ma carte ne bouge plus mais il n'y a plus qu'un seul carré !!! Pourquoi l'informatique ca bug tout le temp^^

$Yi = 7;
$Xi = 0;

Lol ^^

tu vois qu'une case en (0,7) c'est ça ?

Kéké qui adore rendre service !


RE: Isométrie avec tuiles carrées. - horexas - 19-12-2008

Non ce n'est pas du a ca le $Yi je le décrémente car je vais dans le sens contraire (c'est compliqué mais ne nous enmbarquons pas dans de longues conversation ^^)
Je crois que j'ai résolu le probleme mais pour en être sur je voudrai voir les positions des cases... Savez vous comment aligner les valeurs des cases (x,y) en haut a gauche et a droite de ma carte iso ( décalée ), deux bandes de chiffre qui indiquerait la position de mes cases.


RE: Isométrie avec tuiles carrées. - jo_link_noir - 19-12-2008

tu recré un div avec marquer dedans les positions des case, et tu le décale...


RE: Isométrie avec tuiles carrées. - horexas - 19-12-2008

Voila un script normal qui bug... Et je ne comprend pas depuis des heures
Code PHP :
<?php 
for ($y=$y_debut;$y<=$y_fin;$y++) {
for(
$x=$x_debut;$x<=$x_fin;$x++) {

for (
$yy=0;$yy<=7;$yy++)
{
for(
$xx=0;$xx<=7;$xx++)
{
$iX = (($yy-$xx) * (55));
$iY = ((($xx+$yy)/2) * (55));

}
}
echo
'<div style=" position: absolute; left: '.$iY.'px;>'.$x.'</div>';
echo
'<div style=" position: absolute; top: '.$iX.'px;>'.$y.'</div>';

if(
$x==$posx && $y==$posy)
echo
'<div style=" position: absolute; left: 400px; top: 400px; "><img src="http://img376.imageshack.us/img376/9562/isosp1.png" alt="carré" style="top:'.$iY.'px; left:'.$iX.'px; position:absolute;"/></div>';
else
if(!empty(
$TabMAP[$x][$y]))
echo
'<div style=" position: absolute; left: 400px; top: 400px; "><img src="http://img376.imageshack.us/img376/9562/isosp1.png" alt="carré" style="top:'.$iY.'px; left:'.$iX.'px; position:absolute;"/></div>';
else
echo
'<div style=" position: absolute; left: 400px; top: 400px; "><img src="http://img386.imageshack.us/img386/8008/isooy0.png" alt="carré" style="top:'.$iY.'px; left:'.$iX.'px; position:absolute;"/></div>';
}
}



RE: Isométrie avec tuiles carrées. - Zack - 19-12-2008

4eme ligne t'as mis $yy=0, ce serait pas plutôt $y=0 ?


RE: Isométrie avec tuiles carrées. - horexas - 19-12-2008

Non ce n'est pas ca en fait j'ai mis des double $xx et $yy pour afficher définir $iX et $iY et ensuite j'attribue a cette carte des valeur $x et $y car si je ne fais pas ca la carte bouge sur ma page ( les proportions sont respectees mais quand je me déplace $x et $y augment et donc $iX = (($y-$x) * (55))
$iY = ((($x+$y)/2) * (55)) aussi). Sinon le code ci dessous permet d'afficher la position des carrés mais cela ne fonctionne pas non plus. Les requetes if,... ne sont pas pris en compte. En résume rien ne fonctionne^^ malgres mure et dur réflexion et essais
Code PHP :
<?php 
echo'<div style=" position: absolute; left: '.$iY.'px;>'.$x.'</div>';
echo
'<div style=" position: absolute; top: '.$iX.'px;>'.$y.'</div>';



RE: Isométrie avec tuiles carrées - Zack - 19-12-2008

Mais tu te compliques la vie avec tes $yy et $xx. Enfin bref, Je sais pas si c'est çà mais t'as oublié les " pour fermer le 'style=' dans

echo'<div style=" position: absolute; left: '.$iY.'px;">'.$x.'</div>';
echo'<div style=" position: absolute; top: '.$iX.'px;">'.$y.'</div>';

Et en regardant un peu en profondeur, cette boucle sert à rien :

Code PHP :
<?php 
for($xx=0;$xx<=7;$xx++)
{
$iX = (($yy-$xx) * (55));
$iY = ((($xx+$yy)/2) * (55));

}
}
echo
'<div style=" position: absolute; left: '.$iY.'px;>'.$x.'</div>';
echo
'<div style=" position: absolute; top: '.$iX.'px;>'.$y.'</div>';

enfin elle fait pas ce que tu penses qu'elle fait.
Etant donnée que tu mets pas les deux div du dessous dans ta boucle, elle ne sert à rien. Elle va te retourner qu'une seule valeur $iX et $iY quand elle aura fini.
Pour utiliser toutes les valeurs $iX et $iY que la boucle va créer, il faut que t'inclues tes deux divs dedans.

Exemple car mes explications sont jamais clair ^^ :

Code PHP :
<?php 
for ($yy=0;$yy<=7;$yy++)
{

for(
$xx=0;$xx<=7;$xx++)
{
$iX = (($yy-$xx) * (55));
$iY = ((($xx+$yy)/2) * (55));
echo
'<div style=" position: absolute; top: '.$iX.'px;>'.$x.'</div>';
}

echo
'<div style=" position: absolute; left: '.$iY.'px;>'.$y.'</div>';
}

Bon ca va ptête (Voir surement) pas marcher, mais ca doit être un truc dans le genre, faut bidouiller.


RE: Isométrie avec tuiles carrées - horexas - 20-12-2008

J'essaye toute les methodes possibles et inimaagineable mais rien ne fonctionne.... Comment pourrais-je faire un tableau avec les boucles $xx et $yy au dessus? Je crois que si je fais ca peut-etre que le script fonctionnera. Si quelqu'un a une idée pour tout combiner (script dessous ) sans que cela bug, qu'il me cntacte je lui offrirai tout ce qu'il voudra^^
En gros soit:
- je recombine tout ca pour que cela fonctionne ( avec par exemple un stockage dans un tableu pour la requete 3 4 )
- j'essaie de supprimer la boucle trois et quatre et j'essaie de soustraire a la position des images une valeur qui augmente pour compenser le deplacement de ma carte sur la page
encore merci zack tu es génial
for ($y=$y_debut;$y<=$y_fin;$y++) { //je crée sur ces deux lignes des variables $x et $y qui correspondent au coordonnées des cases et qui me permettront
for($x=$x_debut;$x<=$x_fin;$x++) { // d'effectuer des requetes ( * )

for ($yy=0;$yy<=7;$yy++) // je crée d'autres variables $xx et $yy qui vont définir les variables $iX et $iY pour aligner les differentes cases en iso
{ // je vais jusque 7 car il y a 7 cases horizontalement et verticalement sur ma carte ensuite je n'utilise pas les variables $x et $y
for($xx=0;$xx<=7;$xx++) // lorsque qu'elle prennent de grosse valeur leur position va etre 'haute' ( voir ** ) et la carte va se deplacer sur ma page
{
$iX = (($yy-$xx) * (55));
$iY = ((($xx+$yy)/2) * (55));

}
}
echo'<div style=" position: absolute; left: '.$iY.'px;>'.$x.'</div>'; // ici j'essaie d'afficher les coordonnées $x et $y des cases
echo'<div style=" position: absolute; top: '.$iX.'px;>'.$y.'</div>'; //


if($x==$posx && $y==$posy) // ( * ) voila les differentes requetes je recherche la position des joueurs
echo '<div style=" position: absolute; left: 400px; top: 400px; "><img src="http://img376.imageshack.us/img376/9562/isosp1.png" alt="carré" style="top:'.$iY.'px; left:'.$iX.'px; position:absolute;"/></div>'; // ( ** ) voila la position des image avec $iY et $iX et lorsque $x et $y sont grand la position aussi
// donc je prefere faire une autre boucle
else
if(!empty($TabMAP[$x][$y])) // (*) je recherche d'autres joueurs avec un tableau non indique mais c'est le meme que sur la carte de carlou
echo '<div style=" position: absolute; left: 400px; top: 400px; "><img src="http://img376.imageshack.us/img376/9562/isosp1.png" alt="carré" style="top:'.$iY.'px; left:'.$iX.'px; position:absolute;"/></div>'; // (**)
else // si il n'y a personne (*)
echo '<div style=" position: absolute; left: 400px; top: 400px; "><img src="http://img386.imageshack.us/img386/8008/isooy0.png" alt="carré" style="top:'.$iY.'px; left:'.$iX.'px; position:absolute;"/></div>'; //(**)
}
}



RE: Isométrie avec tuiles carrées - jo_link_noir - 20-12-2008

Déjà, les 2 premier for, c'est nul. On ne met pas de requêtes dans une boucle.
Tu récupères des sources et t'essaye même pas de les comprendre...
Code PHP :
<?php 
//requête pour rechercher les joueurs affiche sur la carte
query("SELECT x, y, pseudo, etc
FROM carte
WHERE
(x >=
$x_deb OR x <= $x_fin)
AND (y >=
$y_deb OR y <= $y_fin)
"
)

//variable qui contient les joueur récupérer avec la requête ($joueur['x,y'] = array(pseudo, pseudo2, ...)
$joueur=array();
while(
$req = mysql_fletch_assoc($query))
{
$joueur[$req['x'].','.$req['y']][] = $req['pseudo'];
}

Puis tu fait la même erreur que précédemment. Zack y a déjà répondu.
(19-12-2008, 11:55 PM)Zack a écrit : echo'<div style=" position: absolute; left: '.$iY.'px;">'.$x.'</div>';
echo'<div style=" position: absolute; top: '.$iX.'px;">'.$y.'</div>';