par
ynx » 28 nov. 2023, 13:30
Dans l'exemple que j'ai proposé, les coordonnées des tiles doivent être uniques.
La première tile en haut à gauche doit avoir les coordonnées pos_x=0 et pos_y=0, la suivante pos_x=0 et pos_y=1, etc.
Exemple de données attendus avec mon exemple :
<?php
const TILE_WIDTH = 40;
const TILE_HEIGHT = 40;
$tiles = [
['tile' => 'https://picsum.photos/40/40?random=1', 'pos_x' => 0, 'pos_y' => 0],
['tile' => 'https://picsum.photos/40/40?random=2', 'pos_x' => 0, 'pos_y' => 1],
['tile' => 'https://picsum.photos/40/40?random=3', 'pos_x' => 0, 'pos_y' => 2],
['tile' => 'https://picsum.photos/40/40?random=4', 'pos_x' => 1, 'pos_y' => 0],
['tile' => 'https://picsum.photos/40/40?random=5', 'pos_x' => 1, 'pos_y' => 1],
['tile' => 'https://picsum.photos/40/40?random=6', 'pos_x' => 1, 'pos_y' => 2],
['tile' => 'https://picsum.photos/40/40?random=7', 'pos_x' => 2, 'pos_y' => 0],
['tile' => 'https://picsum.photos/40/40?random=8', 'pos_x' => 2, 'pos_y' => 1],
['tile' => 'https://picsum.photos/40/40?random=9', 'pos_x' => 2, 'pos_y' => 2],
];
?>
<h1>Test</h1>
<?php if (empty($tiles)) : // on vérifie si le tableau $tiles (avec un s) est vide ?>
<p>Pas de tiles !</p>
<?php else : ?>
<div style="position: relative;">
<?php foreach ($tiles as $tile) : // pour chaque "tile" dans le tableau $tiles ?>
<img src="<?= $tile['tile'] ?>"
style="position: absolute; top: <?= $tile['pos_x'] * TILE_WIDTH ?>px; left: <?= $tile['pos_y'] * TILE_HEIGHT ?>px;"
alt="">
<?php endforeach; ?>
</div>
<?php endif; ?>
Ce qui génère le code html suivant où chaque image est bien positionné en fonction des coordonnées :
<h1>Test</h1>
<div style="position: relative;">
<img src="https://picsum.photos/40/40?random=1" style="position: absolute; top: 0px; left: 0px;" alt="">
<img src="https://picsum.photos/40/40?random=2" style="position: absolute; top: 0px; left: 40px;" alt="">
<img src="https://picsum.photos/40/40?random=3" style="position: absolute; top: 0px; left: 80px;" alt="">
<img src="https://picsum.photos/40/40?random=4" style="position: absolute; top: 40px; left: 0px;" alt="">
<img src="https://picsum.photos/40/40?random=5" style="position: absolute; top: 40px; left: 40px;" alt="">
<img src="https://picsum.photos/40/40?random=6" style="position: absolute; top: 40px; left: 80px;" alt="">
<img src="https://picsum.photos/40/40?random=7" style="position: absolute; top: 80px; left: 0px;" alt="">
<img src="https://picsum.photos/40/40?random=8" style="position: absolute; top: 80px; left: 40px;" alt="">
<img src="https://picsum.photos/40/40?random=9" style="position: absolute; top: 80px; left: 80px;" alt="">
</div>
https://jsfiddle.net/z6nsxve4/
Il faudrait revoir tes données et/ou apporter plus de précision car je ne comprends pas pourquoi tes tiles n'ont pas de coordonnées uniques.
Dans l'exemple que j'ai proposé, les coordonnées des tiles doivent être uniques.
La première tile en haut à gauche doit avoir les coordonnées pos_x=0 et pos_y=0, la suivante pos_x=0 et pos_y=1, etc.
Exemple de données attendus avec mon exemple :
[PHP]<?php
const TILE_WIDTH = 40;
const TILE_HEIGHT = 40;
$tiles = [
['tile' => 'https://picsum.photos/40/40?random=1', 'pos_x' => 0, 'pos_y' => 0],
['tile' => 'https://picsum.photos/40/40?random=2', 'pos_x' => 0, 'pos_y' => 1],
['tile' => 'https://picsum.photos/40/40?random=3', 'pos_x' => 0, 'pos_y' => 2],
['tile' => 'https://picsum.photos/40/40?random=4', 'pos_x' => 1, 'pos_y' => 0],
['tile' => 'https://picsum.photos/40/40?random=5', 'pos_x' => 1, 'pos_y' => 1],
['tile' => 'https://picsum.photos/40/40?random=6', 'pos_x' => 1, 'pos_y' => 2],
['tile' => 'https://picsum.photos/40/40?random=7', 'pos_x' => 2, 'pos_y' => 0],
['tile' => 'https://picsum.photos/40/40?random=8', 'pos_x' => 2, 'pos_y' => 1],
['tile' => 'https://picsum.photos/40/40?random=9', 'pos_x' => 2, 'pos_y' => 2],
];
?>
<h1>Test</h1>
<?php if (empty($tiles)) : // on vérifie si le tableau $tiles (avec un s) est vide ?>
<p>Pas de tiles !</p>
<?php else : ?>
<div style="position: relative;">
<?php foreach ($tiles as $tile) : // pour chaque "tile" dans le tableau $tiles ?>
<img src="<?= $tile['tile'] ?>"
style="position: absolute; top: <?= $tile['pos_x'] * TILE_WIDTH ?>px; left: <?= $tile['pos_y'] * TILE_HEIGHT ?>px;"
alt="">
<?php endforeach; ?>
</div>
<?php endif; ?>
[/PHP]
Ce qui génère le code html suivant où chaque image est bien positionné en fonction des coordonnées :
[html]<h1>Test</h1>
<div style="position: relative;">
<img src="https://picsum.photos/40/40?random=1" style="position: absolute; top: 0px; left: 0px;" alt="">
<img src="https://picsum.photos/40/40?random=2" style="position: absolute; top: 0px; left: 40px;" alt="">
<img src="https://picsum.photos/40/40?random=3" style="position: absolute; top: 0px; left: 80px;" alt="">
<img src="https://picsum.photos/40/40?random=4" style="position: absolute; top: 40px; left: 0px;" alt="">
<img src="https://picsum.photos/40/40?random=5" style="position: absolute; top: 40px; left: 40px;" alt="">
<img src="https://picsum.photos/40/40?random=6" style="position: absolute; top: 40px; left: 80px;" alt="">
<img src="https://picsum.photos/40/40?random=7" style="position: absolute; top: 80px; left: 0px;" alt="">
<img src="https://picsum.photos/40/40?random=8" style="position: absolute; top: 80px; left: 40px;" alt="">
<img src="https://picsum.photos/40/40?random=9" style="position: absolute; top: 80px; left: 80px;" alt="">
</div>
[/html]
https://jsfiddle.net/z6nsxve4/
Il faudrait revoir tes données et/ou apporter plus de précision car je ne comprends pas pourquoi tes tiles n'ont pas de coordonnées uniques.