python3基础知识复习 --海龟绘图(turtle)介绍

海龟绘图(turtle)介绍

在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言, 通过编程指挥一只小turtle绘图,后被完整一直到各种高级语言中包括python。

相关操作请参考turtle库的说明。

绘图完成后,记得调用done()函数,让窗口进入消息循环,等待被关闭。否则,由于Python进程会立刻结束,将导致窗口被立刻关闭。

turtle包本身只是一个绘图库,但是配合Python代码,就可以绘制各种复杂的图形。例如,通过循环绘制5个五角星:

from turtle import *

def drawStar(x, y):
    pu() # penup()提起乌龟不作画
    goto(x, y) # 前往指定坐标
    pd() # pendown()放下乌龟作画
    
    seth(0) # set heading: 0 设置乌龟角度
    for i in range(5):
        fd(40) # forward()前进
        rt(144) # right turn 右转

for x in range(0, 250, 50):
    drawStar(x, 0)

done()

1

关于turtle.setheading(to_angle) ==> turtle.seth(to_angle)

作用:设置小海龟当前行进的方向为to_angle,该角度是绝对方向角度值。

参数:to_angle:角度的整数值

to_angle

Turtle.circle(radius,extent=None)

作用:根据半径radius绘制extent角度的弧形
参数:radius:弧形半径,当值为正数时,半径在小海龟左侧,当值为负数时,半径在小海龟右侧。
extent:绘制弧形的角度,当不设置参数或参数设置
None时,绘制整个圆形

eg: 使用递归,可以绘制出非常复杂的图形。例如,下面的代码可以绘制一棵分型树:

from turtle import *

# 设置色彩模式是RGB:
colormode(255)

lt(90) # left turn 左转

lv = 14
l = 120
s = 45

width(lv) # 画笔宽度

# 初始化RGB颜色:
r = 0
g = 0
b = 0
pencolor(r, g, b) # 画笔颜色

penup()
bk(l) # backward 向后退
pendown()
fd(l) # forward 前进

def draw_tree(l, level):
    global r, g, b
    # save the current pen width
    w = width()

    # narrow the pen width
    width(w * 3.0 / 4.0)
    # set color:
    r = r + 1
    g = g + 2
    b = b + 3
    pencolor(r % 200, g % 200, b % 200)

    l = 3.0 / 4.0 * l

    lt(s)
    fd(l)

    if level < lv:
        draw_tree(l, level + 1)
    bk(l)
    rt(2 * s) # right turn 右转
    fd(l)

    if level < lv:
        draw_tree(l, level + 1)
    bk(l)
    lt(s)

    # restore the previous pen width
    width(w)

speed("fastest") # 设置turtle速度(slowest/slow/normal/fast/fastest)

draw_tree(l, 4)

done()

在这里插入图片描述

参考下面位置理解其他tutle命令:
turtle方法汇总 - 简书 (jianshu.com)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值