from cs1graphics import * import random numB = 6 # number of buildings maxF = 10 # maximum number of floors per building numW = 5 # windows per floor grid = 30 # width of one window bldgWidth = grid * (numW + 0.5 * (1+numW)) # windows and halfsize gaps canWidth = bldgWidth * (0.5 + 1.5*numB) canHeight = grid * 1.5 * (1 + maxF) paper = Canvas(canWidth, canHeight) paper.setBackgroundColor('skyblue') for b in range(numB): # time to make building b numF = random.randint(maxF//2, maxF) # random number of floors leftEdge = bldgWidth * (0.5 + 1.5*b) bldgHeight = grid * (0.5 + 1.5 * numF) facade = Rectangle(bldgWidth, bldgHeight) facade.setFillColor('gray') facade.move(leftEdge + bldgWidth/2, canHeight - bldgHeight/2) paper.add(facade) # time to add the floors for f in range(numF): # build a single floor with f=0 the bottom floor y = canHeight - grid * (1 + 1.5*f) # let's make row of windows for w in range(numW): # add a single window with w=0 the leftmost window = Square(grid) window.setFillColor('yellow') window.move(leftEdge + grid * (1 + w*1.5), y) paper.add(window)