轻松学会Python turtle库的运用

轻松学会Python turtle库的运用,第1张

轻松学会Python turtle库的运用 一、turtle简单介绍 1.Turtle库是python语言中一个很流行的函数库,基于thinker模块打造,提供一些比较简单的绘画工具,通过一组或多组函数指令的控制,在坐标系中移动,绘制图形 2.Turtle库近年来也多被用于新手学习python的一种方式 二、Turtle基础知识 1.创建窗口(或画布Canvas) 1.1画布为我们用来展开绘图区域,可以选择它的大小和初始位置

大小turtle.screensize(canvwidth=None, canvheight=None, bg=None)
canvwidth:画布的宽(单位像素,默认值400)
canvheight:画布的高(单位像素,默认值300)
背景颜色

1|t.screensize(800,600,'blue')
2|turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
2、画笔(pen) 2.1画笔(pen)的设置包括画笔属性(如尺寸、颜色)和画笔状态。Turtle模块已经定义了画笔属性和状态的函数。 (1)设置画笔属性
pensize()                                    #设置画笔尺寸
speed(speed)                                        #设置画笔移动速度
color(color)                                        #设置画笔颜色

width()函数是pensize()函数的别名,它们具有相同的功能。
speed()函数的参数speed用于设置画笔移动的速度,其取值范围为[0,10]内的整数。数值越大,速度越快。
color()函数的参数用于设置画笔颜色,该参数值有以下几种表达方式:
-字符串,如"red",“orange”,“yellow”,“green”。
-RGB颜色,又分为RGB整数值和RGB小数值两种,整数值如(255,255,255),(190,213,98),小数值如(1,1,1),(0.65,0.7,0.9)。
-十六进制颜色,如"#FFFFFF","#0060F6"
-常见颜色表示方法及其对应关系

(2)画笔状态及相关函数

Turtle库中画笔分为提起(UP)和放下(DOWN)两种状态

import turtle
turtle.penup()                                             #提起画笔
turtle.pendown()                                           #放下画笔
turtle.done()

turtle模块中penup()和pendown()函数定义了别名,penup()函数的别名为pu(),pendown()函数的别名为pd()。

3.绘制图形 3.1Turtle模块中画笔分为移动控制、角度控制、图形控制和图形填充3种。 (1)移动控制

移动控制函数控制画笔向前、向后移动

foward(distance)                                      #向前移动
backward(distance)                                    #向后移动
goto(x,y=None)                                        #移动到指定位置

函数forward()和backward()的参数distance用于指定画笔移动的距离,单位为像素;函数goto()用于将画笔移动到画布上指定的位置,该函数可以使用参数x、y分别接受表示目标位置的横坐标和纵坐标,也可以接受一个表示坐标向量的参数。

(2)角度控制

角度控制函数可以更改笔画朝向

right(degree)                                         #向右移动
left(degree)                                          #向左移动
seth(angle)                                           #转动到某个方向

函数right()和left()的参数degree用于指定画笔向右和向左转动的角度。函数seth()的参数angle用于设置画笔在坐标系中的角度。angle以x轴正向为0°,以逆时针为正,角度从0°逐渐增大;以顺时针方向为负,角度从0°逐渐减小。
若要使画笔向右或向左移动某段距离,应先调整画笔角度,在使用移动函数。
绘制边长为100像素的正方形

import turtle as t
t.forward(100)
t.seth(-90)
t.forward(100)
t.right(90)
t.forward(100)
t.left(-90)
t.forward(100)
t.right(90)
turtle.done()

运行代码

(3)图形绘制

turtle模块中提供了circle()函数,使用该函数可绘制以当前坐标为圆心,以指定像素值为半径的圆和弧。circle()函数的语法格式如下:

circle(radius,extent=None,steps=None

函数circle()的参数radius用于设置半径,extent用于设置弧的角度。radius和extent的取值可正可负;参数steps用于设置步长,若steps默认值为None步长将自动计算;若给出步长,circle()函数可用于绘制正多边形

(4)图形填充

Turtle模块中可通过fillcolor()函数设置填充颜色,使用begin_fill()函数和end_fill()函数填充图形,实现“画”的绘制
填充一个红色的圆为例:

import turtle
turtle.fillcolor("red")                                 #设置填充颜色
turtle.begin_fill()                                     #开始填充
turtle.circle(20)
turtle.end_fill()                                       #结束填充
turtle.done()

三、用turtle绘制图形 1.绘制樱花
from turtle import *
from random import *
from math import *

def tree(n,l):
    pd()#下笔
    #阴影效果
    t = cos(radians(heading()+45))/8+0.25
    pencolor(t,t,t)
    pensize(n/3)
    forward(l)#画树枝

    if n>0:
        b = random()*15+10 #右分支偏转角度
        c = random()*15+10 #左分支偏转角度
        d = l*(random()*0.25+0.7) #下一个分支的长度
        #右转一定角度,画右分支
        right(b)
        tree(n-1,d)
        #左转一定角度,画左分支
        left(b+c)
        tree(n-1,d)
        #转回来
        right(c)
    else:
        #画叶子
        right(90)
        n=cos(radians(heading()-45))/4+0.5
        pencolor(n,n*0.8,n*0.8)
        circle(3)
        left(90)
        #添加0.3倍的飘落叶子
        if(random()>0.7):
            pu()
            #飘落
            t = heading()
            an = -40 +random()*40
            setheading(an)
            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
            forward(dis)
            setheading(t)
            #画叶子
            pd()
            right(90)
            n = cos(radians(heading()-45))/4+0.5
            pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
            circle(2)
            left(90)
            pu()
            #返回
            t=heading()
            setheading(an)
            backward(dis)
            setheading(t)
    pu()
    backward(l)#退回

bgcolor(0.5,0.5,0.5)#背景色
ht()#隐藏turtle
speed(0)#速度 1-10渐进,0 最快
tracer(0,0)
pu()#抬笔
backward(100)
left(90)#左转90度
pu()#抬笔
backward(300)#后退300
tree(12,100)#递归7层
done()

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5720475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存