Hola estoy tratando de generar un escritorio con la apariencia de un windows 8 donde aparecerían cuadrados grandes y pequeños.
El problema que tengo es que necesito que no se solapen unos con otros. En este script os paso el ejemplo solo con cuadrados pequeños ya que es suficientemente ilustrativo y asi no saturo el codigo con cosas que se repiten.
Al crear un cuadrado, creo a la vez unas variables variables que dicen que el sitio esta ocupado y por lo tanto no se debe generar un cuadrado en el mismo sitio.
El problema es el if con la condiciones de que el espacio esta ocupado que excede el tiempo de procesamiento del servidor.
Os paso el script. Muchas gracias de antemano.
<?php
$mapeadoX = 4;
$mapeadoY = 2;
$numeropequena = 6;
$contadorpequena = 0;
function pequena ($x,$y) {
echo "<rect style='fill:#808080;stroke:#000000;stroke-opacity:1'
id='edi01'
width='100'
height='100'
x='$x'
y='$y'
inkscape:label='#edi1' />";
}
echo "<svg>";
for ($i=0; $contadorpequena < $numeropequena; $i++) {
for ($x=0; $x < $mapeadoX; $x++) {
for ($y=0; $y < $mapeadoY; $y++) {
$random = rand(0,1);
switch ($random) {
case '1':
if ((empty(${'x'.$x})) && (empty(${'y'.$y}))) {
${'x'.$x} = 1;
${'y'.$y} = 1;
pequena($x*100,$y*100);
$contadorpequena++;
if ($contadorpequena >= $numeropequena) {
break 4;
}
}
break;
}
}
}
}
echo "</svg>";
?>