PYTHON turtle绘图日记(内含精美绘图两个及源码)

前言

你在为美术不好烦恼吗?线画不直?圆画的不圆?PS太贵?现在我们一起用PYTHON画出令你惊叹的美图


一、turtle是什么?

turtle是python的第三方库,代码非常之简单简单,0基础也能学

二、使用步骤

1.引入库

cmd代码如下:

pip install turtle

2.基础语法

如下(”分形树“项目中有补充):

1.import turtle as 你给它取得名字,如(tt)
2.tt.title('窗口标题')
3.tt.speed(画笔速度,如:3)
4.tt.penup()抬笔
5.tt.goto(x,y)移动
6.tt.pencolor(画笔颜色)
7.tt.pensize(画笔大小)
8.tt.fillcolor('white')
  tt.begin_fill()
  tt.end_fill()填充颜色
9.tt.setheading(面向角度)
10.tt.circle(x,y)

三、代码示例

1.冰墩墩

代码:

import turtle as tt
tt.title('冰墩墩')
tt.speed(40)
tt.hideturtle()

tt.penup()
tt.goto(177,112)
tt.pencolor('lightgray')
tt.pensize(3)
tt.fillcolor('white')
tt.begin_fill()
tt.pendown()
tt.setheading(80)
tt.circle(-45,200)
tt.circle(-300,23)
tt.end_fill()

tt.penup()
tt.goto(182,95)
tt.pencolor('black')
tt.pensize(1)
tt.fillcolor('black')
tt.begin_fill()
tt.setheading(95)
tt.pendown()
tt.circle(-37,160)
tt.circle(-20,50)
tt.circle(-200,30)
tt.end_fill()

tt.penup()
tt.goto(-73,230)
tt.pencolor('lightgray')
tt.pensize(3)
tt.fillcolor('white')
tt.begin_fill()
tt.pendown()
tt.setheading(20)
tt.circle(-250,35)

tt.setheading(50)
tt.circle(-42,180)

tt.setheading(-50)
tt.circle(-190,30)
tt.circle(-320,45)

tt.circle(120,30)
tt.circle(200,12)
tt.circle(-18,85)
tt.circle(-180,23)
tt.circle(-20,110)
tt.circle(15,115)
tt.circle(100,12)

tt.circle(15,120)
tt.circle(-15,110)
tt.circle(-150,30)
tt.circle(-15,70)
tt.circle(-150,10)
tt.circle(200,35)
tt.circle(-150,20)

tt.setheading(-120)
tt.circle(50,30)
tt.circle(-35,200)
tt.circle(-300,23)

tt.setheading(86)
tt.circle(-300,26)

tt.setheading(122)
tt.circle(-53,160)
tt.end_fill()

tt.penup()
tt.goto(-130,180)
tt.pencolor('black')
tt.pensize(1)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.setheading(120)
tt.circle(-28,160)
tt.setheading(210)
tt.circle(150,20)
tt.end_fill()

tt.penup()
tt.goto(90,230)
tt.setheading(40)
tt.begin_fill()
tt.pendown()
tt.circle(-30,170)
tt.setheading(125)
tt.circle(150,23)
tt.end_fill()

tt.penup()
tt.goto(-180,-55)
tt.fillcolor('black')
tt.begin_fill()
tt.setheading(-120)
tt.pendown()
tt.circle(50,30)
tt.circle(-27,200)
tt.circle(-300,20)
tt.setheading(-90)
tt.circle(300,14)
tt.end_fill()

tt.penup()
tt.goto(108,-168)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.setheading(-115)
tt.circle(110,15)
tt.circle(200,10)
tt.circle(-18,80)
tt.circle(-180,13)
tt.circle(-20,90)
tt.circle(15,60)
tt.setheading(42)
tt.circle(-200,29)
tt.end_fill()

tt.penup()
tt.goto(-38,-210)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.setheading(-155)
tt.circle(15,100)
tt.circle(-10,110)
tt.circle(-100,30)
tt.circle(-15,65)
tt.circle(-100,10)
tt.circle(200,15)
tt.setheading(-14)
tt.circle(-200,27)
tt.end_fill()

tt.penup()
tt.goto(-64,120)
tt.begin_fill()
tt.pendown()
tt.setheading(40)
tt.circle(-35,152)
tt.circle(-100,50)
tt.circle(-35,130)
tt.circle(-100,50)
tt.end_fill()

tt.penup()
tt.goto(-47,55)
tt.fillcolor('white')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(25,360)
tt.end_fill()
tt.penup()
tt.goto(-45,62)
tt.pencolor('darkslategray')
tt.fillcolor('darkslategray')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(19,360)
tt.end_fill()
tt.penup()
tt.goto(-45,68)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(10,360)
tt.end_fill()
tt.penup()
tt.goto(-47,86)
tt.pencolor('white')
tt.fillcolor('white')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(5,360)
tt.end_fill()

tt.penup()
tt.goto(51,82)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.setheading(120)
tt.circle(-35,152)
tt.circle(-100,50)
tt.circle(-25,120)
tt.circle(-120,45)
tt.end_fill()

tt.penup()
tt.goto(79,60)
tt.fillcolor('white')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(24,360)
tt.end_fill()
tt.penup()
tt.goto(79,64)
tt.pencolor('darkslategray')
tt.fillcolor('darkslategray')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(19,360)
tt.end_fill()
tt.penup()
tt.goto(79,70)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(10,360)
tt.end_fill()
tt.penup()
tt.goto(79,88)
tt.pencolor('white')
tt.fillcolor('white')
tt.begin_fill()
tt.pendown()
tt.setheading(0)
tt.circle(5,360)
tt.end_fill()

tt.penup()
tt.goto(37,80)
tt.fillcolor('black')
tt.begin_fill()
tt.pendown()
tt.circle(-8,130)
tt.circle(-22,100)
tt.circle(-8,130)
tt.end_fill()

tt.penup()
tt.goto(-15,48)
tt.setheading(-36)
tt.begin_fill()
tt.pendown()
tt.circle(60,70)
tt.setheading(-132)
tt.circle(-45,100)
tt.end_fill()

tt.penup()
tt.goto(-135,120)
tt.pensize(5)
tt.pencolor('cyan')
tt.pendown()
tt.setheading(60)
tt.circle(-165,150)
tt.circle(-130,78)
tt.circle(-250,30)
tt.circle(-138,105)
tt.penup()
tt.goto(-131,116)
tt.pencolor('slateblue')
tt.pendown()
tt.setheading(60)
tt.circle(-160,144)
tt.circle(-120,78)
tt.circle(-242,30)
tt.circle(-135,105)
tt.penup()
tt.goto(-127,112)
tt.pencolor('orangered')
tt.pendown()
tt.setheading(60)
tt.circle(-155,136)
tt.circle(-116,86)
tt.circle(-220,30)
tt.circle(-134,103)
tt.penup()
tt.goto(-123,108)
tt.pencolor('gold')
tt.pendown()
tt.setheading(60)
tt.circle(-150,136)
tt.circle(-104,86)
tt.circle(-220,30)
tt.circle(-126,102)
tt.penup()
tt.goto(-120,104)
tt.pencolor('greenyellow')
tt.pendown()
tt.setheading(60)
tt.circle(-145,136)
tt.circle(-90,83)
tt.circle(-220,30)
tt.circle(-120,100)           
tt.penup()

tt.penup()
tt.goto(220,115)
tt.pencolor('brown')
tt.pensize(1)
tt.fillcolor('brown')
tt.begin_fill()
tt.pendown()
tt.setheading(36)
tt.circle(-8,180)
tt.circle(-60,24)
tt.setheading(110)
tt.circle(-60,24)
tt.circle(-8,180)
tt.end_fill()

tt.penup()
tt.goto(-5,-170)
tt.pendown()
tt.pencolor('blue')
tt.circle(6)
tt.penup()
tt.goto(10,-170)
tt.pendown()
tt.pencolor('black')
tt.circle(6)
tt.penup()
tt.goto(25,-170)
tt.pendown()
tt.pencolor('brown')
tt.circle(6)
tt.penup()
tt.goto(2,-175)
tt.pendown()
tt.pencolor('lightgoldenrod')
tt.circle(6)
tt.penup()
tt.goto(16,-175)
tt.pendown()
tt.pencolor('green')
tt.circle(6)
tt.penup()

tt.pencolor('black')
tt.goto(-16,-160)
tt.write('BEIJING 2022',font=('Arial',10,'bold italic'))

tt.done()

效果图片:

PYTHON turtle绘图日记(内含精美绘图两个及源码)_第1张图片

 2.分形树

1.代码示例

import turtle as tu

roo = tu.Turtle()  # 创建对象
wn = tu.Screen()  # 屏幕对象
wn.bgcolor("black")  # 屏幕背景
wn.title("分形树")
roo.left(90)  # 移动
roo.speed(20)  # 速度


def draw(l):  # 以长度'l'作为参数的递归函数
    if l < 10:
        return
    else:
        roo.pensize(2)  # 设置画笔大小
        roo.pencolor("yellow")  # 画笔颜色
        roo.forward(l)  # 朝向
        roo.left(30)  # 移动
        draw(3 * l / 4)  # 绘制
        roo.right(60)  # 移动
        draw(3 * l / 4)  # 绘制
        roo.left(30)  # 移动
        roo.pensize(2)
        roo.backward(l)  # 返回初始位置


draw(20)  # 绘制20次

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("red")  # red
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)


########################################################

def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(3)
        roo.pencolor("lightgreen")  # lightgreen
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor("red")  # red
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor("yellow")  # yellow
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)


########################################################
def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(2)
        roo.pencolor("cyan")  # cyan
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("yellow")  # yellow
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)
wn.exitonclick()

2.效果图片

PYTHON turtle绘图日记(内含精美绘图两个及源码)_第2张图片

 

你可能感兴趣的:(python,turtle,实战趣味项目,python,游戏)