Python基础教程:海龟图形绘制入门指南

python09 – 海龟画图

文章目录

  • python09 – 海龟画图
  • 一:画笔的移动指令
  • 二:画笔的控制指令
  • 三:画笔的其他指令
  • 四:海龟画图的技巧
  • 1:画圆和画弧的说明
  • 2:循环类画图
  • turtle是python的内置模块,不用进行额外的安装操作

    一:画笔的移动指令

    语法 说明
    turtIe.forward(distance) 画笔向前运动
    turtIe.backward(distance) 向后运动,但是海龟的朝向不变,可以想象是稍着走
    turtIe.right(angIe) 向右旋转angIe度
    turtIe.left(angIe) 向左旋转angIe度
    turtIe.goto(x,y) 将画笔直接移动到(x, y)这个位置
    turtIe.seth(angIe) 设置画笔的朝向是angIe度
    turtIe.home() 将画笔移回原点(有轨迹),到原点才会朝向东
    turtIe.dot(size) 绘制一个直径为size的圆点
    turtIe.circIe® 画圆,半径为正(负),表示逆(顺)时针画圆
    turtIe.circIe(r, angIe) 画一个半径为r,角度为angIe的弧

    ⚠️ 注意turtIe.backward(distance)turtle.home()的说明,比较特别

    import turtle
    
    
    def draw_pen():
        turtle.fd(80)  # 向前80像素
        turtle.right(90)  # 向右旋转90度
        turtle.fd(60)  # 然后朝着指针的方向,向前60像素
        turtle.home()  # 回到起始点,然后回到起始点之后,箭头指向东
        turtle.done()
    
    
    if __name__ == '__main__':
        draw_pen()
    

    二:画笔的控制指令

    方法 说明
    turtle.pencolor() 设置画笔的颜色
    turtle.fillcolor() 设置填充颜色
    turtle.color(coIor1,coIor2) 同时设置pencolor=color1,fillcolor=color2
    turtle.pensize(width) 设置画笔的粗细
    turtle.begin_fill() 开始填充
    turtle.end_fill() 结束填充
    turtle.penup()/turtle.pu() 抬笔
    turtle.pendown()/turtle.pd() 落笔
    turtle.hideturtle() 隐藏画笔(eg:箭头)只有线轨迹
    turtle.showturtle() 显示画笔(eg:箭头)包括线轨迹
  • turtle.pu() 抬起画笔,是没有轨迹的
  • turtle.pd() 落下画笔,是有轨迹的
  • 三:画笔的其他指令

    方法 说明
    turtle.speed(speed) 设置画笔的移动的速度,0最快,1 ~ 10由慢到快
    turtle.done() 永远是海龟画图的最后一句,表示画图结束
    turtle.tracer(False) + turtle.update() 瞬间完成绘画过程,禁用动画
    turtle.setup(width=?? height=??) 设置画布的宽度和高度
    turtle.bgcolor(color) 设置背景颜色
    turtle.pos() 获取画笔的坐标

    turtle.done()说明

    暂停程序,但窗口但绘图窗体不关闭,直到用户手动关闭窗口或按下键盘上的任意键。

    目的是给用户时间来查看绘制的图形,否则图形窗口会在程序完成后立即关闭

    四:海龟画图的技巧

    海龟画图的指令并不是很多,关键是画图时思路要清晰,知道箭头现在指向哪里,什么时候抬笔什么时候落笔

    1:画圆和画弧的说明

    画圆或弧时,轨迹都是从圆的边上点(eg:O点)开始进行的,而不是从圆中心开始画起轨迹的

    半圆的弧是有轨迹的,但是半圆不是封闭的;若想要封闭需要另画一个轨迹)

    1. 找到基本图形

    2. 控制好画笔的初始角度

    3. 找出基本图形的数量

    4. 确定每个基本图形之间,需要旋转的角度

  • 旋转的角度=初始方向到下一个图形的初始方向
  • 或者旋转的角度=基本图形的最后一个方向到下一个图形的初始方向
  • import turtle
    
    
    def draw_pen():
        turtle.speed(1)
        turtle.fd(80)
        turtle.right(90)
        turtle.fd(60)
        turtle.home()
        turtle.circle(100)  # 绘制一个半径为100的圆
        turtle.circle(-100)  # 绘制一个半径为100的圆
        turtle.seth(90)  # 设置画笔方向为0度
        turtle.fd(100)
        turtle.done()
    
    
    if __name__ == '__main__':
        draw_pen()
    

    def draw_arc_line():
        turtle.tracer(False) # 绘制时,不显示,绘制完成之后,再显示
        turtle.circle(50, 180)  # 绘制一个半径为50的圆,旋转180度 - 半圆,弧形
        turtle.seth(90) # 设置画笔方向为90度
        turtle.circle(50, 180)  # 绘制一个半径为50的圆,旋转180度 - 半圆,弧形
        turtle.seth(180) # 画笔方向为180度
        turtle.circle(50, 180)  # 绘制一个半径为50的圆,旋转180度 - 半圆,弧形
        turtle.update() # 显示,相当于直接完成,不显示动画轨迹
        turtle.done() # 结束绘制
    

    2:循环类画图

    1. 找到基本图形

    2. 控制好画笔的初始角度

    3. 找出基本图形的数量

    4. 确定基本图形的起始点(可能会改变画笔角度和位置)

    import turtle
    
    控制画笔初始角度
    循环n次:
        画基本图形
        调整画笔位置和角度
    turtle.done()
    
    import turtle
    
    
    # 绘制n角形,n只能为奇数
    def draw_n_angle(n, r):
        for i in range(n):
            turtle.forward(r)
            turtle.right(180 - 180 / n)
        turtle.done()
    
    
    if __name__ == '__main__':
        draw_n_angle(5, 100)
    
    import turtle
    
    
    # 绘制n边形
    def draw_n_square(n, r):
        for i in range(n):
            turtle.forward(r)
            turtle.right(360 / n)
        turtle.done()
    
    
    if __name__ == '__main__':
        draw_n_square(6, 100)
    

    熟悉之后,就可以做出美丽的图形了

    import turtle
    
    
    def draw_color():
        turtle.hideturtle()
        turtle.tracer(False)
        turtle.pensize(3)
        colors = ["red", "yellow", "blue", "green"]
        for i in range(4):
            turtle.begin_fill()
            turtle.color(colors[i], colors[(i + 1) % 4])  # turtle.color(colors[i])等同于turtle.pencolor(colors[i])
            turtle.right(90)
            for j in range(4):
                turtle.forward(50)
                turtle.right(90)
            # 从一个起点到另一个起点的行走步骤要相同
            turtle.penup()
            turtle.forward(50)
            turtle.right(90)
            turtle.forward(50)
            turtle.left(90)
            turtle.forward(50)
            turtle.pendown()
            turtle.end_fill()
        turtle.update()
        turtle.done()
    
    
    if __name__ == '__main__':
        draw_color()
    

    作者:是小崔啊

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python基础教程:海龟图形绘制入门指南

    发表回复