python09 - 海龟画图

python09 - 海龟画图


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()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值