Python-turtle小练习

樱花树学习地址https://blog.csdn.net/weixin_43943977/article/details/102691392在这里插入图片描述

from turtle import *
from random import *
from math import *
import time

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

    if n>0:
        b = random()*15+10 #右分支偏转角度
        c = random()*15+10 #左分支偏转角度
        d = l*(random()*0.25+0.7) #下一个分支的长度
        #右转一定角度,画右分支
        turtle_t.right(b)
        tree(n-1,d,turtle_t)
        #左转一定角度,画左分支
        turtle_t.left(b+c)
        tree(n-1,d,turtle_t)
        #转回来
        turtle_t.right(c)
    else:
        #画叶子
        turtle_t.right(90)
        n=cos(radians(turtle_t.heading()-45))/4+0.5
        turtle_t.pencolor('pink')
        #turtle_t.pencolor(n,n*0.8,n*0.8)
        turtle_t.circle(3)
        turtle_t.left(90)
        #添加0.3倍的飘落叶子
        if(random()>0.7):
            turtle_t.up()
            #飘落
            t = turtle_t.heading()
            an = -40 +random()*40
            turtle_t.setheading(an)
            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
            turtle_t.forward(dis)
            turtle_t.setheading(t)
            #画叶子
            turtle_t.pd()
            turtle_t.right(90)
            n = cos(radians(turtle_t.heading()-45))/4+0.5
            #turtle_t.pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
            turtle_t.pencolor('pink')
            turtle_t.circle(2)
            turtle_t.left(90)
            turtle_t.pu()#up与pu都是画笔抬起
            #返回
            t=turtle_t.heading()#显示当前朝向
            turtle_t.setheading(an)#设置当前朝向为angle角度。
            turtle_t.backward(dis)#后退
            turtle_t.setheading(t)
    turtle_t.up()
    turtle_t.backward(l)#退回

def DrawHeart(t):
    t.up()
    t.goto(180,-230)
    t.down()#开始绘画 pendown() or pd() or down()
    t.begin_fill()
    t.setheading(135)#设置当前朝向为angle角度
    for i in range(10):
        t.left(20)
        t.forward(3)
    for i in range(6):
        t.left(10)
        t.forward(3.5)
    t.end_fill()
    t.up()

    t.goto(180, -230)
    t.down()
    t.begin_fill()
    t.setheading(45)  # 设置当前朝向为angle角度
    for i in range(10):
        t.right(20)
        t.forward(3)
    for i in range(6):
        t.right(10)
        t.forward(3.5)
    t.end_fill()
    t.up()

def DrawBigHeart(t):
    t.up()
    t.goto(260,-210)
    t.down()
    t.speed(100)
    t.begin_fill()
    t.setheading(135)#设置当前朝向为angle角度
    for i in range(100):
        t.left(2)
        t.forward(1)
    for i in range(5):
        t.left(1)
        t.forward(6.83)
    t.end_fill()
    t.up()

    t.goto(260, -210)
    t.down()
    t.begin_fill()
    t.setheading(45)  # 设置当前朝向为angle角度
    for i in range(100):
        t.right(2)
        t.forward(1)
    for i in range(5):
        t.right(1)
        t.forward(6.83)
    t.end_fill()
    t.up()
def BiuBiuHeart(turtle_t):
    turtle_t.up()
    turtle_t.goto(100, -250)
    turtle_t.down()
    turtle_t.circle(20)
    turtle_t.setheading(270)
    turtle_t.forward(50)
    turtle_t.setheading(225)
    turtle_t.forward(35)
    turtle_t.goto(100, -300)
    turtle_t.setheading(0)
    turtle_t.forward(35)
    turtle_t.setheading(270)
    turtle_t.forward(28)
    turtle_t.up()
    turtle_t.goto(100, -265)
    turtle_t.down()
    turtle_t.setheading(0)
    turtle_t.forward(30)
    turtle_t.setheading(45)
    turtle_t.forward(12)
    turtle_t.up()
    turtle_t.goto(100, -275)
    turtle_t.down()
    turtle_t.setheading(0)
    turtle_t.forward(40)
    turtle_t.setheading(-45)
    turtle_t.forward(12)


def RecviveHeart(turtle_t):
    turtle_t.up()
    turtle_t.goto(350, -240)
    turtle_t.setheading(0)
    turtle_t.down()
    turtle_t.circle(20)
    turtle_t.setheading(270)
    turtle_t.forward(50)
    turtle_t.setheading(225)
    turtle_t.forward(45)
    turtle_t.goto(350, -290)
    turtle_t.setheading(315)
    turtle_t.forward(45)
    turtle_t.up()
    turtle_t.goto(350, -255)
    turtle_t.down()
    turtle_t.setheading(225)
    turtle_t.forward(30)
    turtle_t.up()
    turtle_t.goto(350, -255)
    turtle_t.down()
    turtle_t.setheading(315)
    turtle_t.forward(30)
    turtle_t.up()

def BeginDraw(turtle_t):
    turtle_t.up()
    turtle_t.color('PaleVioletRed1')
    turtle_t.goto(-150, 350)
    turtle_t.write('十年之约,如期而至', font=('Courier', 20, 'bold'))#土味情话系列,爱写啥写啥
    turtle_t.up()
    turtle_t.color('pink', 'red')
    turtle_t.pensize(3)
    turtle_t.setheading(0)
    BiuBiuHeart(turtle_t)
    RecviveHeart(turtle_t)
    DrawHeart(turtle_t)
    DrawBigHeart(turtle_t)
    turtle_t.up()


turtle_t=Turtle()
w=Screen()
w.bgpic('bg.gif')#设置背景,只能是gif格式
turtle_t.ht()#隐藏turtle
turtle_t.speed(200)
time.sleep(3)
BeginDraw(turtle_t)
turtle_t.setheading(0)
#time.sleep(10)
turtle_t.goto(0,-50)
turtle_t.pensize(2)#改变画笔的尺寸 pensize() or width()    turtle.pensize() or turtle.width() 获取当前的画笔尺寸    turtle.pensize(x) or turtle.width(x) #将画笔尺寸改为x
turtle_t.color('pink','red')#画笔颜色,填充色
w.bgcolor(0.5,0.5,0.5)#背景色
#turtle_t.speed(0)#速度 1-10渐进,0 最快
w.tracer(0,0)#(0,0)跳过动画直接呈现图像,当第一个参数n设置后,绘画动画效果被关闭,每隔n次更新下屏幕,可以加速绘画速度
turtle_t.up()#抬笔
turtle_t.backward(150)
turtle_t.left(90)#左转90度
turtle_t.up()#抬笔
turtle_t.backward(300)#后退300
tree(12,100,turtle_t)#递归7层

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值