Исходное изображение:
Правила:
4*4 квадратных блока, в каждом из которых есть постройки и озеленение.
Размер квадратного здания равен 1/9 площади квартала.
Окружающие 12 кварталов имеют здания по бокам и зеленые насаждения в центре.
Центральные 4 блока имеют одно здание в центре с окружающей зеленью.
Обработка холста:
код:
def setup(): size(800,800) background(250,250,100) global road, blocksPerNeighborhood, blocksPerRow, blockLength, houseSetbacks, houseSize, houseQuantity road = 25 blocksPerNeighborhood = 16 blocksPerRow = int(sqrt(blocksPerNeighborhood)) blockLength = int((width/blocksPerRow)-road) houseSetbacks = 9 houseQuantity = 9 houseSize = int(blockLength/3) - houseSetbacks def draw(): background(255) #make blocks for b in range(blocksPerNeighborhood): fill(0, 150, 50) stroke(50, 50, 50) strokeWeight(2) col = b % blocksPerRow row = b / blocksPerRow xCol = col*(blockLength+road) yCol = row*(blockLength+road) rect(xCol,yCol,blockLength,blockLength) if b <> 5 and b <>6 and b <>9 and b <>10: #make houses in surrounding blocks fill(250,0,0) stroke(0,0,0) h = -1 while h < houseQuantity-1: h = h+1 if h <> 4: colhouse = h % 3 rowhouse = h / 3 rect(xCol+colhouse*(houseSize+houseSetbacks),yCol+rowhouse*(houseSize+houseSetbacks),houseSize,houseSize) print(houseSize) for b in (5,6,9,10): #make houses in central blocks fill(250,0,0) stroke(0,0,0) h = 4 colhouse = h % 3 rowhouse = h / 3 rect(xCol+colhouse*(houseSize+houseSetbacks),yCol+rowhouse*(houseSize+houseSetbacks),houseSize,houseSize) print(houseSize)