Ver Mensaje Individual
  #2  
Antiguo 14-11-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que la forma más simple es recorrer la matriz "Terreno" buscando espacio suficiente.
Si la matriz "casa" es de 3x2, buscarás desde la primera posicion hasta la longitud del terreno - 3.
for i := 0 to Terreno.Largo - Casa.Largo

Cuando encuentras un lugar sin "peldaño" buscas los 3 siguientes para ver si están vacíos para construir la casa
for j := i to i + Casa.Largo

Si las tres posiciones están limplias, haces lo mismo para las posiciones que ocuparía la casa en las siguientes líneas
for k := l to Casa.Alto
for m := i to i + Casa.Largo

Todo esto sería mejor hacerlo con while para que ni bien encuentres una celda ocupada salgas de la búsqueda y sigas con la siguiente celda.

Si también tienes que buscar la casa en otra orientación, deberías ver primero que no sea simetrica después de girarla (un cuadrado por ejemplo) y repetir la búsqueda
Responder Con Cita