python画蒙德里安矩形抽象画

"""蒙德里安矩形抽象画.py
20世纪荷兰艺术家蒙德里安用一种简明的色彩矩阵”征服世界”。
这种色彩矩阵是在长方形里不断地画不相等的长方形。

"""
from random import randint
from turtle import Turtle,Screen

def drawRectangle(t,x1, y1, x2, y2):
    """用海龟t从左上角和右下角坐标画一个随机颜色的矩形.
    参数说明:
    t:海龟对象
    x1,y1:左上角坐标
    x2,y2:右下角坐标
    """
    red, green, blue  = randint(0,255),randint(0,255),randint(0,255) 
    t.pencolor(red, green, blue)     
    t.fillcolor(red, green, blue)  #填充颜色用同一种色彩
    t.up()
    t.goto(x1, y1)
    t.down()
    t.begin_fill()
    t.goto(x2, y1)
    t.goto(x2, y2)
    t.goto(x1, y2)
    t.goto(x1, y1)
    t.end_fill()

def mondrian(t,x1,y1,x2,y2,level):
    """用给定的层数画蒙得里安矩形抽象画."""
    if level > 0:
        drawRectangle(t,x1, y1, x2, y2)
        hv = randint(1, 2)                                        # 随机生成1,2,如果1则垂直分矩形,否则水平分
        if hv == 1:                                               # 垂直分
            mondrian(t,x1, y1, x1 + (x2 - x1) / 3 , y2,level - 1) # 在左边(1/3位置)画一个矩形
            mondrian(t,x1 + (x2 - x1) / 3 , y1, x2, y2,level - 1) # 在右边画一个矩形
        else:                                                     # 水平分
            mondrian(t,x1, y1, x2, y1 - (y1 - y2) / 3,level - 1)  # 在上边(1/3位置)画一个矩形
            mondrian(t,x1, y1 - (y1 - y2) / 3, x2, y2,level - 1)  # 在下边画一个矩形
    
def main():

    screen = Screen()
    screen.delay(0)
    screen.bgcolor("black")
    screen.setup(800,800)
    screen.colormode(255)
    screen.title("蒙德里安矩形抽象画_www.lixingqiu.com")
    
    t = Turtle(visible=False)
    left,top = -200,200
    right,bottom =  200,-200
    mondrian(t,left,top,right,bottom,10)

    screen.mainloop()

if __name__=="__main__":

    main()
    

python蒙德里安矩形抽象画_www.lixingqiu.com