|
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
|