绘制图形,挑战上色分形树-python

python绘制图形

最近太懈怠啦~没有好好学习,赶紧把课程补一补!
今天要学小乌龟库——turtle库

小乌龟库比较特别,大部分的语句都是 .()的形式:表示使用 中的方法(),或者调用函数库中的函数()

形状绘制函数
  • turtle.forward(distance) -画笔向前(右)移动distance距离
  • turtle.backward(distance) -画笔向后(左)移动distance距离
  • turtle.right(degree) -绘制方向向右旋转degree度
  • turtle.left(degree) -绘制方向向左旋转degree度
  • turtle.exitonclick() -点击关闭图形窗口
绘制图形,挑战上色分形树-python_第1张图片

先小小的试验下

"""
    作者:xxj
    功能:bulingbuling_pentagram
    版本:1.0
    时间:2019.1.17
"""
import turtle

def main():
    """
        主函数
    """

    count = 1

    while count <= 5:
        turtle.forward(250)
        turtle.right(144)
        count = count+1

    turtle.exitonclick()

if __name__ == '__main__':
    main()

绘制图形,挑战上色分形树-python_第2张图片

画笔控制函数
  • turtle.penup() -抬起画笔,之后移动画笔不绘制形状(画虚线)
  • turtle.pendown() -落下画笔,之后移动画笔绘制形状
  • turtle.pensize() -设置画笔宽度
  • turtle.pencolor() -设置画笔颜色,常用的颜色:white、black、grey、darkgreen、gold、violet、purple

先小小的试验下,顺便把代码改成迭代

"""
    author:xxj
    function:recursive_pentagram
    version:2.0
    time:2019.1.17
"""
import turtle



def draw_recursive_pentagram(size):
    """
        迭代绘制五角星
    """
    # 绘制五角星功能
    count = 1
    while count <= 5:
        turtle.forward(size)
        turtle.right(144)
        count += 1

    #五角星绘制完成,更新参数
    size += 10
    if size <= 100:
        draw_recursive_pentagram(size)




def main():
    """
        主函数
    """
    turtle.penup()
    turtle.bk(400)
    turtle.pendown()
    turtle.pensize(2)
    turtle.pencolor('red')
    turtle.speed(0.1)

    size = 50
    draw_recursive_pentagram(size)

    turtle.exitonclick()


if __name__ == '__main__':
    main()

绘制图形,挑战上色分形树-python_第3张图片

大BOSS:利用递归绘制分形树

思路分析:

绘制图形,挑战上色分形树-python_第4张图片

角度转换:先向右转M°,一直绘制到枝丫长度小于0,再回到节点,再向左转两个M°,即2M°,一直绘制,最后再向右转M°回到正中间。
绘制图形,挑战上色分形树-python_第5张图片

"""
    author:xxj
    function:recursive_fractal_tree
    version:1.0
    time:2019.1.18
"""
import turtle

def draw_branch(branch_length):
    """
        绘制分形树
    """
    if branch_length <= 5:
        turtle.color('green')

    if branch_length > 5:
        # 绘制右侧树枝
        turtle.forward(branch_length)
        print('向前',branch_length)
        turtle.right(20)
        print('右转 20')
        draw_branch(branch_length - 15)

        # 绘制左侧树枝
        turtle.left(40)
        print('左转 40')
        draw_branch(branch_length - 15)

        # 返回之前的树枝
        turtle.right(20)
        print('右转 20')
        turtle.backward(branch_length)
        print('向后', branch_length)
        turtle.color('brown')

def main():
    """
        主函数
    """
    turtle.left(90)
    turtle.penup()
    turtle.backward(180)
    turtle.pendown()
    turtle.screensize(800, 600, 'black')
    turtle.pensize(2)
    turtle.color('brown')
    draw_branch(100)
    turtle.penup()
    turtle.goto(0, -180)
    turtle.write("居居老师和颖宝冲鸭", font=("Arial", 20, "normal"))
    turtle.exitonclick()

if __name__ == '__main__':
    main()


教程:小象学院,梁斌老师,讲的贼好~

最后表扬下认真学习的自己

你可能感兴趣的:(绘制图形,挑战上色分形树-python)